| File: | src/continua.cc |
| Warning: | line 23822, column 24 The right operand of '+' is a garbage value |
Press '?' to see keyboard shortcuts
Keyboard shortcuts:
| 1 | /* Copyright (C) 2001-2012 | |||
| 2 | Thomas Kuhn <tkuhn@uni-bremen.de> | |||
| 3 | Stefan Buehler <sbuehler@ltu.se> | |||
| 4 | ||||
| 5 | This program is free software; you can redistribute it and/or modify it | |||
| 6 | under the terms of the GNU General Public License as published by the | |||
| 7 | Free Software Foundation; either version 2, or (at your option) any | |||
| 8 | later version. | |||
| 9 | ||||
| 10 | This program is distributed in the hope that it will be useful, | |||
| 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| 13 | GNU General Public License for more details. | |||
| 14 | ||||
| 15 | You should have received a copy of the GNU General Public License | |||
| 16 | along with this program; if not, write to the Free Software | |||
| 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | |||
| 18 | USA. */ | |||
| 19 | ||||
| 20 | /** | |||
| 21 | \file continua.cc | |||
| 22 | ||||
| 23 | Continuum absorption models. | |||
| 24 | ||||
| 25 | This is the file from arts-1-0, back-ported to arts-1-1. | |||
| 26 | ||||
| 27 | \retval pxsec <b>Internal functions:</b> Return pseudo absorption cross | |||
| 28 | sections, defined such that the absorption coefficient | |||
| 29 | \f$\alpha\f$ (in units of 1/m) is:<br> | |||
| 30 | \f$\alpha\f$ = pxsec * VMR.<br> | |||
| 31 | \retval xsec <b>xsec_continuum_tag:</b> Now returns true abosorption | |||
| 32 | cross sections, defined such that the | |||
| 33 | absorption coefficient \f$\alpha\f$ (in units of 1/m) is:<br> | |||
| 34 | \f$\alpha\f$ = xsec * n* VMR, where n is the total | |||
| 35 | number density.<br> | |||
| 36 | ||||
| 37 | The absorption model functions add absorption to xsec/pxsec, | |||
| 38 | rather than replacing the previous content. | |||
| 39 | ||||
| 40 | <H3>The following full water vapor models are implemented:</H3><br> | |||
| 41 | <ol> | |||
| 42 | <li><b>H2O-MPM87</b> absorption model (line and continuum) according to <br> | |||
| 43 | H. J. Liebe,<br> | |||
| 44 | <i>A contribution to modeling atmospheric millimeter-wave properties</i>,<br> | |||
| 45 | Frequenz, 41, 1987, 31-36<br> | |||
| 46 | and<br> | |||
| 47 | H. J. Liebe and D. H. Layton,<br> | |||
| 48 | <i>Millimeter-wave properties of the atmosphere: | |||
| 49 | Laboratory studies and propagation modeling</i>,<br> | |||
| 50 | U.S. Dept. of Commerce, National Telecommunications and Information | |||
| 51 | Administration, Institute for Communication Sciences,<br> | |||
| 52 | 325 Broadway, Boulder, CO 80303-3328, report 87224. | |||
| 53 | </li> | |||
| 54 | <li><b>H2O-MPM89</b> absorption model (line and continuum) according to <br> | |||
| 55 | H. J. Liebe,<br> Int. J. Infrared and Millimeter Waves, 10(6), 1989, 631. | |||
| 56 | </li> | |||
| 57 | <li><b>H2O-MPM93</b> absorption model (line and continuum) according to <br> | |||
| 58 | H. J. Liebe and G. A. Hufford and M. G. Cotton,<br> | |||
| 59 | <i>Propagation modeling of moist air and suspended water/ice | |||
| 60 | particles at frequencies below 1000 GHz</i>,<br> | |||
| 61 | AGARD 52nd Specialists Meeting of the Electromagnetic Wave | |||
| 62 | Propagation Panel,<br> Palma de Mallorca, Spain, 1993, May 17-21 | |||
| 63 | <a href="ftp://ftp.its.bldrdoc.gov/pub/mpm93/">(WWW access)</a>. | |||
| 64 | </li> | |||
| 65 | <li><b>H2O-CP98</b> absorption model (line and continuum) according to <br> | |||
| 66 | S. L. Cruz-Pol et al.,<br> Radio Science, 33(5), 1319, 1998 | |||
| 67 | <a href="http://ece.uprm.edu/~pol/Atmosphere.html">(WWW access)</a>. | |||
| 68 | </li> | |||
| 69 | <li><b>H2O-PWR98</b> absorption model (line and continuum) according to <br> | |||
| 70 | P. W. Rosenkranz,<br> | |||
| 71 | Radio Science, 33(4), 919, 1998 and<br> | |||
| 72 | Radio Science, 34(4), 1025, 1999 | |||
| 73 | <a href="ftp://mesa.mit.edu/phil/lbl_rt">(WWW access)</a>. | |||
| 74 | </li> | |||
| 75 | </ol> | |||
| 76 | <br> | |||
| 77 | <br> | |||
| 78 | <br> | |||
| 79 | <br> | |||
| 80 | <H3>The following full oxygen models are implemented:</H3><br> | |||
| 81 | <ol> | |||
| 82 | <li><b>O2-MPM93</b> absorption model (line and continuum) according to <br> | |||
| 83 | H. J. Liebe and G. A. Hufford and M. G. Cotton,<br> | |||
| 84 | <i>Propagation modeling of moist air and suspended water/ice | |||
| 85 | particles at frequencies below 1000 GHz</i>,<br> | |||
| 86 | AGARD 52nd Specialists Meeting of the Electromagnetic Wave | |||
| 87 | Propagation Panel,<br> Palma de Mallorca, Spain, 1993, May 17-21 | |||
| 88 | <a href="ftp://ftp.its.bldrdoc.gov/pub/mpm93/">(WWW access)</a>. | |||
| 89 | </li> | |||
| 90 | <li><b>O2-PWR93</b> absorption model (line and continuum) according to <br> | |||
| 91 | P. W. Rosenkranz,<br> Chapter 2, in M. A. Janssen, <br> | |||
| 92 | <I>Atmospheric Remote Sensing by Microwave Radiometry</i>,<br> | |||
| 93 | John Wiley & Sons, Inc., 1993 | |||
| 94 | <a href="ftp://mesa.mit.edu/phil/lbl_rt">(WWW access)</a>. | |||
| 95 | </li> | |||
| 96 | </ol> | |||
| 97 | <br> | |||
| 98 | <br> | |||
| 99 | <br> | |||
| 100 | <br> | |||
| 101 | <H3>The following continuum parameterizations are implemented:</H3><br> | |||
| 102 | <ol> | |||
| 103 | <li><b>H2O-H2O (H2O-SelfContStandardType)</b>:<br> | |||
| 104 | P. W. Rosenkranz,<br> | |||
| 105 | Radio Science, Vol. 33, No 4, Pages 919-928, 1998 and <br> | |||
| 106 | Radio Science, Vol. 34, No 4, Page 1025, 1999 | |||
| 107 | <a href="ftp://mesa.mit.edu/phil/lbl_rt">(WWW access)</a>. | |||
| 108 | </li> | |||
| 109 | <li><b>H2O-H2O (H2O-SelfContCKD222)</b>:<br> | |||
| 110 | CKDv2.2.2 H2O self continuum from the FORTRAN77 code written by<br> | |||
| 111 | <a href="http://www.rtweb.aer.com/continuum_frame.html">Atmospheric and | |||
| 112 | Environmental Research Inc. (AER),</a><br> | |||
| 113 | Radiation and Climate Group<br> | |||
| 114 | 131 Hartwell Avenue<br> | |||
| 115 | Lexington, MA 02421, USA | |||
| 116 | </li> | |||
| 117 | <li><b>H2O-H2O (H2O-SelfContCKD242)</b>:<br> | |||
| 118 | CKDv2.4.2 H2O self continuum from the FORTRAN77 code written by<br> | |||
| 119 | <a href="http://www.rtweb.aer.com/continuum_frame.html">Atmospheric and | |||
| 120 | Environmental Research Inc. (AER),</a><br> | |||
| 121 | Radiation and Climate Group<br> | |||
| 122 | 131 Hartwell Avenue<br> | |||
| 123 | Lexington, MA 02421, USA | |||
| 124 | </li> | |||
| 125 | <li><b>H2O-H2O (H2O-SelfContCKDMT100)</b>:<br> | |||
| 126 | CKD_MTv1.00 H2O self continuum from the FORTRAN77 code written by<br> | |||
| 127 | <a href="http://www.rtweb.aer.com/continuum_frame.html">Atmospheric and | |||
| 128 | Environmental Research Inc. (AER),</a><br> | |||
| 129 | Radiation and Climate Group<br> | |||
| 130 | 131 Hartwell Avenue<br> | |||
| 131 | Lexington, MA 02421, USA | |||
| 132 | </li> | |||
| 133 | <li><b>H2O-H2O (H2O-SelfContCKDMT252)</b>:<br> | |||
| 134 | CKD_MTv2.50 H2O self continuum from the FORTRAN77 code written by<br> | |||
| 135 | <a href="http://www.rtweb.aer.com/continuum_frame.html">Atmospheric and | |||
| 136 | Environmental Research Inc. (AER),</a><br> | |||
| 137 | Radiation and Climate Group<br> | |||
| 138 | 131 Hartwell Avenue<br> | |||
| 139 | Lexington, MA 02421, USA | |||
| 140 | </li> | |||
| 141 | <li><b>H2O-H2O (H2O-SelfContCKDMT320)</b>:<br> | |||
| 142 | CKD_MTv3.20 H2O self continuum from the FORTRAN77 code written by<br> | |||
| 143 | <a href="http://www.rtweb.aer.com/continuum_frame.html">Atmospheric and | |||
| 144 | Environmental Research Inc. (AER),</a><br> | |||
| 145 | Radiation and Climate Group<br> | |||
| 146 | 131 Hartwell Avenue<br> | |||
| 147 | Lexington, MA 02421, USA | |||
| 148 | </li> | |||
| 149 | <li><b>H2O-air (H2O-ForeignContStandardType)</b>: <br> | |||
| 150 | P. W. Rosenkranz,<br> | |||
| 151 | Radio Science, Vol. 33, No 4, Pages 919-928, 1998 and <br> | |||
| 152 | Radio Science, Vol. 34, No 4, Page 1025, 1999 | |||
| 153 | <a href="ftp://mesa.mit.edu/phil/lbl_rt">(WWW access)</a>. | |||
| 154 | </li> | |||
| 155 | <li><b>H2O-air (H2O-foreignContCKD222)</b>:<br> | |||
| 156 | CKDv2.2.2 H2O foreign continuum from the FORTRAN77 code written by<br> | |||
| 157 | <a href="http://www.rtweb.aer.com/continuum_frame.html">Atmospheric and | |||
| 158 | Environmental Research Inc. (AER),</a><br> | |||
| 159 | Radiation and Climate Group<br> | |||
| 160 | 131 Hartwell Avenue<br> | |||
| 161 | Lexington, MA 02421, USA | |||
| 162 | </li> | |||
| 163 | <li><b>H2O-air (H2O-foreignContCKD242)</b>:<br> | |||
| 164 | CKDv2.4.2 H2O foreign continuum from the FORTRAN77 code written by<br> | |||
| 165 | <a href="http://www.rtweb.aer.com/continuum_frame.html">Atmospheric and | |||
| 166 | Environmental Research Inc. (AER),</a><br> | |||
| 167 | Radiation and Climate Group<br> | |||
| 168 | 131 Hartwell Avenue<br> | |||
| 169 | Lexington, MA 02421, USA | |||
| 170 | </li> | |||
| 171 | <li><b>H2O-air (H2O-foreignContCKDMT100)</b>:<br> | |||
| 172 | CKD_MTv1.00 H2O foreign continuum from the FORTRAN77 code written by<br> | |||
| 173 | <a href="http://www.rtweb.aer.com/continuum_frame.html">Atmospheric and | |||
| 174 | Environmental Research Inc. (AER),</a><br> | |||
| 175 | Radiation and Climate Group<br> | |||
| 176 | 131 Hartwell Avenue<br> | |||
| 177 | Lexington, MA 02421, USA | |||
| 178 | </li> | |||
| 179 | <li><b>H2O-air (H2O-foreignContCKDMT252)</b>:<br> | |||
| 180 | CKD_MTv2.50 H2O foreign continuum from the FORTRAN77 code written by<br> | |||
| 181 | <a href="http://www.rtweb.aer.com/continuum_frame.html">Atmospheric and | |||
| 182 | Environmental Research Inc. (AER),</a><br> | |||
| 183 | Radiation and Climate Group<br> | |||
| 184 | 131 Hartwell Avenue<br> | |||
| 185 | Lexington, MA 02421, USA | |||
| 186 | </li> | |||
| 187 | <li><b>H2O-air (H2O-foreignContCKDMT320)</b>:<br> | |||
| 188 | CKD_MTv3.20 H2O foreign continuum from the FORTRAN77 code written by<br> | |||
| 189 | <a href="http://www.rtweb.aer.com/continuum_frame.html">Atmospheric and | |||
| 190 | Environmental Research Inc. (AER),</a><br> | |||
| 191 | Radiation and Climate Group<br> | |||
| 192 | 131 Hartwell Avenue<br> | |||
| 193 | Lexington, MA 02421, USA | |||
| 194 | </li> | |||
| 195 | <li><b>H2O-air (H2O-ForeignContMaTippingType)</b>: <br> | |||
| 196 | Q. Ma and R. H. Tipping,<br> | |||
| 197 | J. Chem. Phys., 117(23), 10581, 2002.<br> | |||
| 198 | </li> | |||
| 199 | <li><b>H2O-air (H2O-ContMPM93)</b>:<br> | |||
| 200 | H. J. Liebe and G. A. Hufford and M. G. Cotton,<br> | |||
| 201 | <i>Propagation modeling of moist air and suspended water/ice<br> | |||
| 202 | particles at frequencies below 1000 GHz</i>,<br> | |||
| 203 | AGARD 52nd Specialists Meeting of the Electromagnetic Wave<br> | |||
| 204 | Propagation Panel, Palma de Mallorca, Spain, 1993, May 17-21 | |||
| 205 | <a href="ftp://ftp.its.bldrdoc.gov/pub/mpm93/">(WWW access)</a>. | |||
| 206 | </li> | |||
| 207 | <li><b>O2-air (O2-SelfContStandardType)</b>:<br> | |||
| 208 | P. W. Rosenkranz,<br> | |||
| 209 | Chapter 2, in M. A. Janssen, <br> | |||
| 210 | <i>Atmospheric Remote Sensing by Microwave Radiometry</i>, | |||
| 211 | John Wiley & Sons, Inc., 1993 | |||
| 212 | <a href="ftp://mesa.mit.edu/phil/lbl_rt">(WWW access)</a>.<br> | |||
| 213 | and also described in<br> | |||
| 214 | H. J. Liebe and G. A. Hufford and M. G. Cotton,<br> | |||
| 215 | <i>Propagation modeling of moist air and suspended water/ice<br> | |||
| 216 | particles at frequencies below 1000 GHz</i>,<br> | |||
| 217 | AGARD 52nd Specialists Meeting of the Electromagnetic Wave<br> | |||
| 218 | Propagation Panel, Palma de Mallorca, Spain, 1993, May 17-21 | |||
| 219 | <a href="ftp://ftp.its.bldrdoc.gov/pub/mpm93/">(WWW access)</a>. | |||
| 220 | </li> | |||
| 221 | <li><b>O2-air (O2-CIAfunCKDMT100)</b>:<br> | |||
| 222 | CKD_MT version 1.00 O2 CIA fundamental band from the FORTRAN77 code written by<br> | |||
| 223 | <a href="http://www.rtweb.aer.com/continuum_frame.html">Atmospheric and | |||
| 224 | Environmental Research Inc. (AER),</a><br> | |||
| 225 | Radiation and Climate Group<br> | |||
| 226 | 131 Hartwell Avenue<br> | |||
| 227 | Lexington, MA 02421, USA | |||
| 228 | </li> | |||
| 229 | <li><b>O2-air (O2-v0v0CKDMT100)</b>:<br> | |||
| 230 | CKD_MT version 1.00 O2 band absorption model for the \f$a^1\Delta_g\f$ | |||
| 231 | \htmlonly←\endhtmlonly \latexonly$\leftarrow$\endlatexonly | |||
| 232 | \f$X^3\Sigma^-_g\f$ band system | |||
| 233 | (\f$\nu=0\f$ | |||
| 234 | \htmlonly←\endhtmlonly \latexonly$\leftarrow$\endlatexonly | |||
| 235 | \f$\nu=0\f$ | |||
| 236 | transitions around 1.27 microns).<br> | |||
| 237 | Source code from the FORTRAN77 code written by<br> | |||
| 238 | <a href="http://www.rtweb.aer.com/continuum_frame.html">Atmospheric and | |||
| 239 | Environmental Research Inc. (AER),</a><br> | |||
| 240 | Radiation and Climate Group<br> | |||
| 241 | 131 Hartwell Avenue<br> | |||
| 242 | Lexington, MA 02421, USA | |||
| 243 | </li> | |||
| 244 | <li><b>O2-air (O2-v1v0CKDMT100)</b>:<br> | |||
| 245 | CKD_MT version 1.00 O2 band absorption model for the \f$a^1\Delta_g\f$ | |||
| 246 | \htmlonly←\endhtmlonly \latexonly$\leftarrow$\endlatexonly | |||
| 247 | \f$X^3\Sigma^-_g\f$ band system | |||
| 248 | (\f$\nu=1\f$ | |||
| 249 | \htmlonly←\endhtmlonly \latexonly$\leftarrow$\endlatexonly | |||
| 250 | \f$\nu=0\f$ | |||
| 251 | transitions around 1.06 microns).<br> | |||
| 252 | Source code from the FORTRAN77 code written by<br> | |||
| 253 | <a href="http://www.rtweb.aer.com/continuum_frame.html">Atmospheric and | |||
| 254 | Environmental Research Inc. (AER),</a><br> | |||
| 255 | Radiation and Climate Group<br> | |||
| 256 | 131 Hartwell Avenue<br> | |||
| 257 | Lexington, MA 02421, USA | |||
| 258 | </li> | |||
| 259 | <li><b>N2-N2 (N2-SelfContStandardType)</b>:<br> | |||
| 260 | P. W. Rosenkranz,<br> | |||
| 261 | Chapter 2, in M. A. Janssen, <br> | |||
| 262 | <i>Atmospheric Remote Sensing by Microwave Radiometry</i>, | |||
| 263 | John Wiley & Sons, Inc., 1993 | |||
| 264 | <a href="ftp://mesa.mit.edu/phil/lbl_rt">(WWW access)</a>. | |||
| 265 | </li> | |||
| 266 | <li><b>N2-N2 (N2-SelfContMPM93)</b>:<br> | |||
| 267 | H. J. Liebe and G. A. Hufford and M. G. Cotton,<br> | |||
| 268 | <i>Propagation modeling of moist air and suspended water/ice<br> | |||
| 269 | particles at frequencies below 1000 GHz</i>,<br> | |||
| 270 | AGARD 52nd Specialists Meeting of the Electromagnetic Wave<br> | |||
| 271 | Propagation Panel, Palma de Mallorca, Spain, 1993, May 17-21 | |||
| 272 | <a href="ftp://ftp.its.bldrdoc.gov/pub/mpm93/">(WWW access)</a>. | |||
| 273 | </li> | |||
| 274 | <li><b>N2-N2 (N2-CIArotCKDMT100)</b>:<br> | |||
| 275 | CKD_MT version 1.00 N2-N2 CIA rotational band absorption model.<br> | |||
| 276 | Source code from the FORTRAN77 code written by<br> | |||
| 277 | <a href="http://www.rtweb.aer.com/continuum_frame.html">Atmospheric and | |||
| 278 | Environmental Research Inc. (AER),</a><br> | |||
| 279 | Radiation and Climate Group<br> | |||
| 280 | 131 Hartwell Avenue<br> | |||
| 281 | Lexington, MA 02421, USA | |||
| 282 | <li><b>N2-N2 (N2-CIAfunCKDMT100)</b>:<br> | |||
| 283 | CKD_MT version 1.00 N2-N2 CIA fundamental band absorption model.<br> | |||
| 284 | Source code from the FORTRAN77 code written by<br> | |||
| 285 | <a href="http://www.rtweb.aer.com/continuum_frame.html">Atmospheric and | |||
| 286 | Environmental Research Inc. (AER),</a><br> | |||
| 287 | Radiation and Climate Group<br> | |||
| 288 | 131 Hartwell Avenue<br> | |||
| 289 | Lexington, MA 02421, USA | |||
| 290 | </li> | |||
| 291 | <li><b>CO2-CO2 (CO2-SelfContPWR93)</b>:<br> | |||
| 292 | P. W. Rosenkranz,<br> | |||
| 293 | Chapter 2, in M. A. Janssen, <br> | |||
| 294 | <i>Atmospheric Remote Sensing by Microwave Radiometry</i>, | |||
| 295 | John Wiley & Sons, Inc., 1993 | |||
| 296 | <a href="ftp://mesa.mit.edu/phil/lbl_rt">(WWW access)</a>. | |||
| 297 | </li> | |||
| 298 | <li><b>CO2-N2 (CO2-ForeignContPWR93)</b>: <br> | |||
| 299 | P. W. Rosenkranz,<br> | |||
| 300 | Chapter 2, in M. A. Janssen, <br> | |||
| 301 | <i>Atmospheric Remote Sensing by Microwave Radiometry</i>, | |||
| 302 | John Wiley & Sons, Inc., 1993 | |||
| 303 | <a href="ftp://mesa.mit.edu/phil/lbl_rt">(WWW access)</a>. | |||
| 304 | </li> | |||
| 305 | <li><b>CO2-CO2 (CO2-SelfContHo66)</b>:<br> | |||
| 306 | Ho, Kaufman and Thaddeus,<br> | |||
| 307 | Laboratory Measurements of microwave absorption in models of the | |||
| 308 | atmosphere of Venus"<br> | |||
| 309 | JGR, 1966. | |||
| 310 | </li> | |||
| 311 | <li><b>CO2-N2 (CO2-ForeignContHo66)</b>: <br> | |||
| 312 | Ho, Kaufman and Thaddeus,<br> | |||
| 313 | Laboratory Measurements of microwave absorption in models of the | |||
| 314 | atmosphere of Venus"<br> | |||
| 315 | JGR, 1966. | |||
| 316 | </li> | |||
| 317 | <li><b>CO2-air (CO2-CKD241)</b>:<br> | |||
| 318 | CKDv2.4.1 CO2 continuum from the FORTRAN77 code written by<br> | |||
| 319 | <a href="http://www.rtweb.aer.com/continuum_frame.html">Atmospheric and | |||
| 320 | Environmental Research Inc. (AER),</a><br> | |||
| 321 | Radiation and Climate Group<br> | |||
| 322 | 131 Hartwell Avenue<br> | |||
| 323 | Lexington, MA 02421, USA | |||
| 324 | </li> | |||
| 325 | <li><b>CO2-air (CO2-CKDMT100)</b>:<br> | |||
| 326 | CKD_MT version 1.00 CO2 continuum from the FORTRAN77 code written by<br> | |||
| 327 | <a href="http://www.rtweb.aer.com/continuum_frame.html">Atmospheric and | |||
| 328 | Environmental Research Inc. (AER),</a><br> | |||
| 329 | Radiation and Climate Group<br> | |||
| 330 | 131 Hartwell Avenue<br> | |||
| 331 | Lexington, MA 02421, USA | |||
| 332 | </li> | |||
| 333 | </ol> | |||
| 334 | <br> | |||
| 335 | <br> | |||
| 336 | <br> | |||
| 337 | <br> | |||
| 338 | <H3>The following cloud absorption models are implemented:</H3><br> | |||
| 339 | <ol> | |||
| 340 | <li><b>Suspended water droplet (liquidcloud-MPM93)</b> | |||
| 341 | absorption parameterization from MPM93 model<br> | |||
| 342 | H. J. Liebe and G. A. Hufford and M. G. Cotton,<br> | |||
| 343 | <i>Propagation modeling of moist air and suspended water/ice | |||
| 344 | particles at frequencies below 1000 GHz</i>,<br> | |||
| 345 | AGARD 52nd Specialists Meeting of the Electromagnetic Wave | |||
| 346 | Propagation Panel,<br> Palma de Mallorca, Spain, 1993, May 17-21 | |||
| 347 | <a href="ftp://ftp.its.bldrdoc.gov/pub/mpm93/">(WWW access)</a>. | |||
| 348 | </li> | |||
| 349 | <li><b>Suspended water droplet (liquidcloud-ELL07)</b> | |||
| 350 | absorption parameterization from ELL07 model<br> | |||
| 351 | W. J. Ellison <br> | |||
| 352 | <i>Permittivity of Pure Water, at Standard Atmospheric Pressure, over the | |||
| 353 | Frequency Range 0-25 THz and Temperature Range 0-100C</i>,<br> | |||
| 354 | J. Phys. Chem. Ref. Data, Vol. 36, No. 1, 2007 | |||
| 355 | </li | |||
| 356 | ||||
| 357 | <li><b>Ice crystal absorption (icecloud-MPM93)</b> parameterization from MPM93 model<br> | |||
| 358 | H. J. Liebe and G. A. Hufford and M. G. Cotton,<br> | |||
| 359 | <i>Propagation modeling of moist air and suspended water/ice | |||
| 360 | particles at frequencies below 1000 GHz</i>,<br> | |||
| 361 | AGARD 52nd Specialists Meeting of the Electromagnetic Wave | |||
| 362 | Propagation Panel,<br> Palma de Mallorca, Spain, 1993, May 17-21 | |||
| 363 | <a href="ftp://ftp.its.bldrdoc.gov/pub/mpm93/">(WWW access)</a>. | |||
| 364 | </li> | |||
| 365 | </ol> | |||
| 366 | <br> | |||
| 367 | <br> | |||
| 368 | ||||
| 369 | <b>The following unit conversions are used for the implemented models:</b><br> | |||
| 370 | (SI units: meter, kilogram, second, ampere, Kelvin, candela)<br> | |||
| 371 | ||||
| 372 | \verbatim | |||
| 373 | ||||
| 374 | x g/cm^3 = y kg/m^3 <===> y = x * 1.00e3 | |||
| 375 | x g/m^3 = y kg/m^3 <===> y = x * 1.00e-3 | |||
| 376 | x GHz = y Hz <===> y = x * 1.00e9 | |||
| 377 | x 1/GHz = y 1/Hz <===> y = x * 1.00e-9 | |||
| 378 | x hPa = y Pa <===> y = x * 1.00e2 | |||
| 379 | x 1/hPa = y 1/Pa <===> y = x * 1.00e-2 | |||
| 380 | x 1/cm = y 1/m <===> y = x * 1.0e2 | |||
| 381 | x 1/km = y 1/m <===> y = x * 1.00e-3 | |||
| 382 | x dB = y Np <===> y = x / [10.0 * log10(e)] | |||
| 383 | x dB/km = y 1/m <===> y = x * 1.00e-3 / [10.0 * log10(e)] | |||
| 384 | x Np/km = y 1/m <===> y = x * 1.00e-3 | |||
| 385 | ||||
| 386 | and especially for the MPM model versions: | |||
| 387 | ||||
| 388 | (4 * pi / c) * 10 * log(e) = 0.1820 * 10^6 dB/km/GHz | |||
| 389 | = 0.1820 * 10^-6 dB/m/Hz | |||
| 390 | \endverbatim | |||
| 391 | ||||
| 392 | <br> | |||
| 393 | ||||
| 394 | \author Thomas Kuhn | |||
| 395 | \date 2003-11-19 | |||
| 396 | ||||
| 397 | */ | |||
| 398 | ||||
| 399 | #include <cmath> | |||
| 400 | #include "arts.h" | |||
| 401 | #include "matpackI.h" | |||
| 402 | #include "array.h" | |||
| 403 | #include "absorption.h" | |||
| 404 | #include "continua.h" | |||
| 405 | #include "global_data.h" | |||
| 406 | ||||
| 407 | ||||
| 408 | // ################################################################################# | |||
| 409 | ||||
| 410 | // global constants as defined in constants.cc | |||
| 411 | ||||
| 412 | extern const Numeric EULER_NUMBER; | |||
| 413 | extern const Numeric LOG10_EULER_NUMBER; | |||
| 414 | extern const Numeric NAT_LOG_TEN; | |||
| 415 | extern const Numeric PI; | |||
| 416 | extern const Numeric SPEED_OF_LIGHT; | |||
| 417 | extern const Numeric DENSITY_OF_WATER; | |||
| 418 | ||||
| 419 | const Numeric LIQUID_AND_ICE_TREAT_AS_ZERO = 1e-10; | |||
| 420 | ||||
| 421 | // numerical constants specific defined for the file continua.cc | |||
| 422 | ||||
| 423 | // conversion from neper to decibel: | |||
| 424 | //const Numeric Np_to_dB = (10.000000 * LOG10_EULER_NUMBER); // [dB/Np] | |||
| 425 | // conversion from decibel to neper: | |||
| 426 | //const Numeric dB_to_Np = (1.000000 / Np_to_dB); // [Np/dB] | |||
| 427 | // conversion from GHz to Hz: | |||
| 428 | //const Numeric GHz_to_Hz = 1.000000e9; // [Hz/GHz] | |||
| 429 | // conversion from Hz to GHz: | |||
| 430 | const Numeric Hz_to_GHz = 1.000000e-9; // [GHz/Hz] | |||
| 431 | // conversion from kPa to Pa: | |||
| 432 | //const Numeric kPa_to_Pa = 1.000000e3; // [kPa/Pa] | |||
| 433 | // conversion from Pa to kPa: | |||
| 434 | const Numeric Pa_to_kPa = 1.000000e-3; // [Pa/kPa] | |||
| 435 | // conversion from hPa to Pa (hPa = mbar): | |||
| 436 | //const Numeric hPa_to_Pa = 1.000000e2; // [hPa/Pa] | |||
| 437 | // conversion from Pa to hPa (hPa = mbar): | |||
| 438 | const Numeric Pa_to_hPa = 1.000000e-2; // [Pa/hPa] | |||
| 439 | ||||
| 440 | // MPM pre-factor for unit setting: | |||
| 441 | //const Numeric dB_m_Hz = 0.1820427855916028e-06; // [dB/m/Hz] (4 * pi / c) * 10 * log(e) | |||
| 442 | //const Numeric dB_km_GHz = 0.1820427855916028e+06; // [dB/km/GHz] (4 * pi / c) * 10 * log(e) | |||
| 443 | ||||
| 444 | ||||
| 445 | // absorption unit conversions | |||
| 446 | ||||
| 447 | // conversion from dB/km to Np/km for absorption units: | |||
| 448 | //const Numeric dB_km_to_Np_km = dB_to_Np; | |||
| 449 | // conversion from dB/km to Np/m for absorption units: | |||
| 450 | //const Numeric dB_km_to_Np_m = (1.00000e-3 / (10.0 * LOG10_EULER_NUMBER)); | |||
| 451 | // conversion from dB/km to 1/m for absorption units: | |||
| 452 | const Numeric dB_km_to_1_m = (1.00000e-3 / (10.0 * LOG10_EULER_NUMBER)); | |||
| 453 | ||||
| 454 | ||||
| 455 | // lower limit for absorption calculation due to underflow error: | |||
| 456 | ||||
| 457 | const Numeric VMRCalcLimit = 1.000e-25; | |||
| 458 | ||||
| 459 | ||||
| 460 | //////////////////////////////////////////////////////////////////////////// | |||
| 461 | // arrays of the CKD H2O, CO2, N2, O2 absorption models | |||
| 462 | //////////////////////////////////////////////////////////////////////////// | |||
| 463 | ||||
| 464 | // additional array fields due to different numbering schemes of F77 and C/C++ | |||
| 465 | const int addF77fields = 1; | |||
| 466 | ||||
| 467 | ||||
| 468 | //////////////////////////////////////////////////////////////////////////// | |||
| 469 | // Continuum data constants | |||
| 470 | //////////////////////////////////////////////////////////////////////////// | |||
| 471 | ||||
| 472 | /* | |||
| 473 | --------------------------------------------------------------------- | |||
| 474 | ||||
| 475 | c 29 August 2002 | |||
| 476 | c | |||
| 477 | c This version, ckd_2.4.2, is composed of the updates to all continua | |||
| 478 | c including water vapor (ckd_2.2). This is to retain consistency between the | |||
| 479 | c continuum and the HITRAN line parameters. | |||
| 480 | c | |||
| 481 | ||||
| 482 | further information can be found under | |||
| 483 | http://www.rtweb.aer.com/continuum_frame.html | |||
| 484 | ||||
| 485 | Transformation from original F77 code to C/C++ by | |||
| 486 | T. Kuhn, iup Bremen, October 2003 | |||
| 487 | ||||
| 488 | --------------------------------------------------------------------- | |||
| 489 | */ | |||
| 490 | // H2O self continuum parameters at T=296 K for the CKD versions 0 to 2.4.2 | |||
| 491 | // date of last update: 06/28/82 | |||
| 492 | // units of (CM**3/MOL)*1.E-20 | |||
| 493 | const Numeric SL296_ckd_0_v1 = -20.0; | |||
| 494 | const Numeric SL296_ckd_0_v2 = 20000.0; | |||
| 495 | const Numeric SL296_ckd_0_dv = 10.0; | |||
| 496 | const int SL296_ckd_0_npt = 2003; | |||
| 497 | const double SL296_ckd_0[SL296_ckd_0_npt+addF77fields] = { | |||
| 498 | 0.0000e-00, 1.1109e-01, 1.0573e-01, | |||
| 499 | 1.0162e-01, 1.0573e-01, 1.1109e-01, 1.2574e-01, 1.3499e-01, // f02740 | |||
| 500 | 1.4327e-01, 1.5065e-01, 1.5164e-01, 1.5022e-01, 1.3677e-01, // f02750 | |||
| 501 | 1.3115e-01, 1.2253e-01, 1.1271e-01, 1.0070e-01, 8.7495e-02, // f02760 | |||
| 502 | 8.0118e-02, 6.9940e-02, 6.2034e-02, 5.6051e-02, 4.7663e-02, // f02770 | |||
| 503 | 4.2450e-02, 3.6690e-02, 3.3441e-02, 3.0711e-02, 2.5205e-02, // f02780 | |||
| 504 | 2.2113e-02, 1.8880e-02, 1.6653e-02, 1.4626e-02, 1.2065e-02, // f02790 | |||
| 505 | 1.0709e-02, 9.1783e-03, 7.7274e-03, 6.7302e-03, 5.6164e-03, // f02800 | |||
| 506 | 4.9089e-03, 4.1497e-03, 3.5823e-03, 3.1124e-03, 2.6414e-03, // f02810 | |||
| 507 | 2.3167e-03, 2.0156e-03, 1.7829e-03, 1.5666e-03, 1.3928e-03, // f02820 | |||
| 508 | 1.2338e-03, 1.0932e-03, 9.7939e-04, 8.8241e-04, 7.9173e-04, // f02830 | |||
| 509 | 7.1296e-04, 6.4179e-04, 5.8031e-04, 5.2647e-04, 4.7762e-04, // f02850 | |||
| 510 | 4.3349e-04, 3.9355e-04, 3.5887e-04, 3.2723e-04, 2.9919e-04, // f02860 | |||
| 511 | 2.7363e-04, 2.5013e-04, 2.2876e-04, 2.0924e-04, 1.9193e-04, // f02870 | |||
| 512 | 1.7618e-04, 1.6188e-04, 1.4891e-04, 1.3717e-04, 1.2647e-04, // f02880 | |||
| 513 | 1.1671e-04, 1.0786e-04, 9.9785e-05, 9.2350e-05, 8.5539e-05, // f02890 | |||
| 514 | 7.9377e-05, 7.3781e-05, 6.8677e-05, 6.3993e-05, 5.9705e-05, // f02900 | |||
| 515 | 5.5788e-05, 5.2196e-05, 4.8899e-05, 4.5865e-05, 4.3079e-05, // f02910 | |||
| 516 | 4.0526e-05, 3.8182e-05, 3.6025e-05, 3.4038e-05, 3.2203e-05, // f02920 | |||
| 517 | 3.0511e-05, 2.8949e-05, 2.7505e-05, 2.6170e-05, 2.4933e-05, // f02930 | |||
| 518 | 2.3786e-05, 2.2722e-05, 2.1736e-05, 2.0819e-05, 1.9968e-05, // f02940 | |||
| 519 | 1.9178e-05, 1.8442e-05, 1.7760e-05, 1.7127e-05, 1.6541e-05, // f02960 | |||
| 520 | 1.5997e-05, 1.5495e-05, 1.5034e-05, 1.4614e-05, 1.4230e-05, // f02970 | |||
| 521 | 1.3883e-05, 1.3578e-05, 1.3304e-05, 1.3069e-05, 1.2876e-05, // f02980 | |||
| 522 | 1.2732e-05, 1.2626e-05, 1.2556e-05, 1.2544e-05, 1.2604e-05, // f02990 | |||
| 523 | 1.2719e-05, 1.2883e-05, 1.3164e-05, 1.3581e-05, 1.4187e-05, // f03000 | |||
| 524 | 1.4866e-05, 1.5669e-05, 1.6717e-05, 1.8148e-05, 2.0268e-05, // f03010 | |||
| 525 | 2.2456e-05, 2.5582e-05, 2.9183e-05, 3.3612e-05, 3.9996e-05, // f03020 | |||
| 526 | 4.6829e-05, 5.5055e-05, 6.5897e-05, 7.5360e-05, 8.7213e-05, // f03030 | |||
| 527 | 1.0046e-04, 1.1496e-04, 1.2943e-04, 1.5049e-04, 1.6973e-04, // f03040 | |||
| 528 | 1.8711e-04, 2.0286e-04, 2.2823e-04, 2.6780e-04, 2.8766e-04, // f03050 | |||
| 529 | 3.1164e-04, 3.3640e-04, 3.6884e-04, 3.9159e-04, 3.8712e-04, // f03070 | |||
| 530 | 3.7433e-04, 3.4503e-04, 3.1003e-04, 2.8027e-04, 2.5253e-04, // f03080 | |||
| 531 | 2.3408e-04, 2.2836e-04, 2.4442e-04, 2.7521e-04, 2.9048e-04, // f03090 | |||
| 532 | 3.0489e-04, 3.2646e-04, 3.3880e-04, 3.3492e-04, 3.0987e-04, // f03100 | |||
| 533 | 2.9482e-04, 2.8711e-04, 2.6068e-04, 2.2683e-04, 1.9996e-04, // f03110 | |||
| 534 | 1.7788e-04, 1.6101e-04, 1.3911e-04, 1.2013e-04, 1.0544e-04, // f03120 | |||
| 535 | 9.4224e-05, 8.1256e-05, 7.3667e-05, 6.2233e-05, 5.5906e-05, // f03130 | |||
| 536 | 5.1619e-05, 4.5140e-05, 4.0273e-05, 3.3268e-05, 3.0258e-05, // f03140 | |||
| 537 | 2.6440e-05, 2.3103e-05, 2.0749e-05, 1.8258e-05, 1.6459e-05, // f03150 | |||
| 538 | 1.4097e-05, 1.2052e-05, 1.0759e-05, 9.1400e-06, 8.1432e-06, // f03160 | |||
| 539 | 7.1460e-06, 6.4006e-06, 5.6995e-06, 4.9372e-06, 4.4455e-06, // f03180 | |||
| 540 | 3.9033e-06, 3.4740e-06, 3.1269e-06, 2.8059e-06, 2.5558e-06, // f03190 | |||
| 541 | 2.2919e-06, 2.0846e-06, 1.8983e-06, 1.7329e-06, 1.5929e-06, // f03200 | |||
| 542 | 1.4631e-06, 1.3513e-06, 1.2461e-06, 1.1519e-06, 1.0682e-06, // f03210 | |||
| 543 | 9.9256e-07, 9.2505e-07, 8.6367e-07, 8.0857e-07, 7.5674e-07, // f03220 | |||
| 544 | 7.0934e-07, 6.6580e-07, 6.2580e-07, 5.8853e-07, 5.5333e-07, // f03230 | |||
| 545 | 5.2143e-07, 4.9169e-07, 4.6431e-07, 4.3898e-07, 4.1564e-07, // f03240 | |||
| 546 | 3.9405e-07, 3.7403e-07, 3.5544e-07, 3.3819e-07, 3.2212e-07, // f03250 | |||
| 547 | 3.0714e-07, 2.9313e-07, 2.8003e-07, 2.6777e-07, 2.5628e-07, // f03260 | |||
| 548 | 2.4551e-07, 2.3540e-07, 2.2591e-07, 2.1701e-07, 2.0866e-07, // f03270 | |||
| 549 | 2.0082e-07, 1.9349e-07, 1.8665e-07, 1.8027e-07, 1.7439e-07, // f03290 | |||
| 550 | 1.6894e-07, 1.6400e-07, 1.5953e-07, 1.5557e-07, 1.5195e-07, // f03300 | |||
| 551 | 1.4888e-07, 1.4603e-07, 1.4337e-07, 1.4093e-07, 1.3828e-07, // f03310 | |||
| 552 | 1.3569e-07, 1.3270e-07, 1.2984e-07, 1.2714e-07, 1.2541e-07, // f03320 | |||
| 553 | 1.2399e-07, 1.2102e-07, 1.1878e-07, 1.1728e-07, 1.1644e-07, // f03330 | |||
| 554 | 1.1491e-07, 1.1305e-07, 1.1235e-07, 1.1228e-07, 1.1224e-07, // f03340 | |||
| 555 | 1.1191e-07, 1.1151e-07, 1.1098e-07, 1.1068e-07, 1.1109e-07, // f03350 | |||
| 556 | 1.1213e-07, 1.1431e-07, 1.1826e-07, 1.2322e-07, 1.3025e-07, // f03360 | |||
| 557 | 1.4066e-07, 1.5657e-07, 1.7214e-07, 1.9449e-07, 2.2662e-07, // f03370 | |||
| 558 | 2.6953e-07, 3.1723e-07, 3.7028e-07, 4.4482e-07, 5.3852e-07, // f03380 | |||
| 559 | 6.2639e-07, 7.2175e-07, 7.7626e-07, 8.7248e-07, 9.6759e-07, // f03400 | |||
| 560 | 1.0102e-06, 1.0620e-06, 1.1201e-06, 1.2107e-06, 1.2998e-06, // f03410 | |||
| 561 | 1.3130e-06, 1.2856e-06, 1.2350e-06, 1.1489e-06, 1.0819e-06, // f03420 | |||
| 562 | 1.0120e-06, 9.4795e-07, 9.2858e-07, 9.8060e-07, 1.0999e-06, // f03430 | |||
| 563 | 1.1967e-06, 1.2672e-06, 1.3418e-06, 1.3864e-06, 1.4330e-06, // f03440 | |||
| 564 | 1.4592e-06, 1.4598e-06, 1.4774e-06, 1.4726e-06, 1.4820e-06, // f03450 | |||
| 565 | 1.5050e-06, 1.4984e-06, 1.5181e-06, 1.5888e-06, 1.6850e-06, // f03460 | |||
| 566 | 1.7690e-06, 1.9277e-06, 2.1107e-06, 2.3068e-06, 2.5347e-06, // f03470 | |||
| 567 | 2.8069e-06, 3.1345e-06, 3.5822e-06, 3.9051e-06, 4.3422e-06, // f03480 | |||
| 568 | 4.8704e-06, 5.5351e-06, 6.3454e-06, 7.2690e-06, 8.2974e-06, // f03490 | |||
| 569 | 9.7609e-06, 1.1237e-05, 1.3187e-05, 1.5548e-05, 1.8784e-05, // f03510 | |||
| 570 | 2.1694e-05, 2.5487e-05, 3.0092e-05, 3.5385e-05, 4.2764e-05, // f03520 | |||
| 571 | 4.9313e-05, 5.5800e-05, 6.2968e-05, 7.1060e-05, 7.7699e-05, // f03530 | |||
| 572 | 8.7216e-05, 8.9335e-05, 9.2151e-05, 9.2779e-05, 9.4643e-05, // f03540 | |||
| 573 | 9.7978e-05, 1.0008e-04, 1.0702e-04, 1.1026e-04, 1.0828e-04, // f03550 | |||
| 574 | 1.0550e-04, 1.0432e-04, 1.0428e-04, 9.8980e-05, 9.4992e-05, // f03560 | |||
| 575 | 9.5159e-05, 1.0058e-04, 1.0738e-04, 1.1550e-04, 1.1229e-04, // f03570 | |||
| 576 | 1.0596e-04, 1.0062e-04, 9.1742e-05, 8.4492e-05, 6.8099e-05, // f03580 | |||
| 577 | 5.6295e-05, 4.6502e-05, 3.8071e-05, 3.0721e-05, 2.3297e-05, // f03590 | |||
| 578 | 1.8688e-05, 1.4830e-05, 1.2049e-05, 9.6754e-06, 7.9192e-06, // f03600 | |||
| 579 | 6.6673e-06, 5.6468e-06, 4.8904e-06, 4.2289e-06, 3.6880e-06, // f03620 | |||
| 580 | 3.2396e-06, 2.8525e-06, 2.5363e-06, 2.2431e-06, 1.9949e-06, // f03630 | |||
| 581 | 1.7931e-06, 1.6164e-06, 1.4431e-06, 1.2997e-06, 1.1559e-06, // f03640 | |||
| 582 | 1.0404e-06, 9.4300e-07, 8.4597e-07, 7.6133e-07, 6.8623e-07, // f03650 | |||
| 583 | 6.2137e-07, 5.6345e-07, 5.1076e-07, 4.6246e-07, 4.1906e-07, // f03660 | |||
| 584 | 3.8063e-07, 3.4610e-07, 3.1554e-07, 2.8795e-07, 2.6252e-07, // f03670 | |||
| 585 | 2.3967e-07, 2.1901e-07, 2.0052e-07, 1.8384e-07, 1.6847e-07, // f03680 | |||
| 586 | 1.5459e-07, 1.4204e-07, 1.3068e-07, 1.2036e-07, 1.1095e-07, // f03690 | |||
| 587 | 1.0237e-07, 9.4592e-08, 8.7530e-08, 8.1121e-08, 7.5282e-08, // f03700 | |||
| 588 | 6.9985e-08, 6.5189e-08, 6.0874e-08, 5.6989e-08, 5.3530e-08, // f03710 | |||
| 589 | 5.0418e-08, 4.7745e-08, 4.5367e-08, 4.3253e-08, 4.1309e-08, // f03730 | |||
| 590 | 3.9695e-08, 3.8094e-08, 3.6482e-08, 3.4897e-08, 3.3500e-08, // f03740 | |||
| 591 | 3.2302e-08, 3.0854e-08, 2.9698e-08, 2.8567e-08, 2.7600e-08, // f03750 | |||
| 592 | 2.6746e-08, 2.5982e-08, 2.5510e-08, 2.5121e-08, 2.4922e-08, // f03760 | |||
| 593 | 2.4909e-08, 2.5013e-08, 2.5216e-08, 2.5589e-08, 2.6049e-08, // f03770 | |||
| 594 | 2.6451e-08, 2.6978e-08, 2.7687e-08, 2.8600e-08, 2.9643e-08, // f03780 | |||
| 595 | 3.0701e-08, 3.2058e-08, 3.3695e-08, 3.5558e-08, 3.7634e-08, // f03790 | |||
| 596 | 3.9875e-08, 4.2458e-08, 4.5480e-08, 4.8858e-08, 5.2599e-08, // f03800 | |||
| 597 | 5.7030e-08, 6.2067e-08, 6.7911e-08, 7.4579e-08, 8.1902e-08, // f03810 | |||
| 598 | 8.9978e-08, 9.9870e-08, 1.1102e-07, 1.2343e-07, 1.3732e-07, // f03820 | |||
| 599 | 1.5394e-07, 1.7318e-07, 1.9383e-07, 2.1819e-07, 2.4666e-07, // f03840 | |||
| 600 | 2.8109e-07, 3.2236e-07, 3.7760e-07, 4.4417e-07, 5.2422e-07, // f03850 | |||
| 601 | 6.1941e-07, 7.4897e-07, 9.2041e-07, 1.1574e-06, 1.4126e-06, // f03860 | |||
| 602 | 1.7197e-06, 2.1399e-06, 2.6266e-06, 3.3424e-06, 3.8418e-06, // f03870 | |||
| 603 | 4.5140e-06, 5.0653e-06, 5.8485e-06, 6.5856e-06, 6.8937e-06, // f03880 | |||
| 604 | 6.9121e-06, 6.9005e-06, 6.9861e-06, 6.8200e-06, 6.6089e-06, // f03890 | |||
| 605 | 6.5809e-06, 7.3496e-06, 8.0311e-06, 8.3186e-06, 8.4260e-06, // f03900 | |||
| 606 | 9.0644e-06, 9.4965e-06, 9.4909e-06, 9.0160e-06, 9.1494e-06, // f03910 | |||
| 607 | 9.3629e-06, 9.5944e-06, 9.5459e-06, 8.9919e-06, 8.6040e-06, // f03920 | |||
| 608 | 7.8613e-06, 7.1567e-06, 6.2677e-06, 5.1899e-06, 4.4188e-06, // f03930 | |||
| 609 | 3.7167e-06, 3.0636e-06, 2.5573e-06, 2.0317e-06, 1.6371e-06, // f03950 | |||
| 610 | 1.3257e-06, 1.0928e-06, 8.9986e-07, 7.4653e-07, 6.1111e-07, // f03960 | |||
| 611 | 5.1395e-07, 4.3500e-07, 3.7584e-07, 3.2633e-07, 2.8413e-07, // f03970 | |||
| 612 | 2.4723e-07, 2.1709e-07, 1.9294e-07, 1.7258e-07, 1.5492e-07, // f03980 | |||
| 613 | 1.3820e-07, 1.2389e-07, 1.1189e-07, 1.0046e-07, 9.0832e-08, // f03990 | |||
| 614 | 8.2764e-08, 7.4191e-08, 6.7085e-08, 6.0708e-08, 5.4963e-08, // f04000 | |||
| 615 | 4.9851e-08, 4.5044e-08, 4.0916e-08, 3.7220e-08, 3.3678e-08, // f04010 | |||
| 616 | 3.0663e-08, 2.7979e-08, 2.5495e-08, 2.3286e-08, 2.1233e-08, // f04020 | |||
| 617 | 1.9409e-08, 1.7770e-08, 1.6260e-08, 1.4885e-08, 1.3674e-08, // f04030 | |||
| 618 | 1.2543e-08, 1.1551e-08, 1.0655e-08, 9.8585e-09, 9.1398e-09, // f04040 | |||
| 619 | 8.4806e-09, 7.8899e-09, 7.3547e-09, 6.8670e-09, 6.4131e-09, // f04060 | |||
| 620 | 5.9930e-09, 5.6096e-09, 5.2592e-09, 4.9352e-09, 4.6354e-09, // f04070 | |||
| 621 | 4.3722e-09, 4.1250e-09, 3.9081e-09, 3.7118e-09, 3.5372e-09, // f04080 | |||
| 622 | 3.3862e-09, 3.2499e-09, 3.1324e-09, 3.0313e-09, 2.9438e-09, // f04090 | |||
| 623 | 2.8686e-09, 2.8050e-09, 2.7545e-09, 2.7149e-09, 2.6907e-09, // f04100 | |||
| 624 | 2.6724e-09, 2.6649e-09, 2.6642e-09, 2.6725e-09, 2.6871e-09, // f04110 | |||
| 625 | 2.7056e-09, 2.7357e-09, 2.7781e-09, 2.8358e-09, 2.9067e-09, // f04120 | |||
| 626 | 2.9952e-09, 3.1020e-09, 3.2253e-09, 3.3647e-09, 3.5232e-09, // f04130 | |||
| 627 | 3.7037e-09, 3.9076e-09, 4.1385e-09, 4.3927e-09, 4.6861e-09, // f04140 | |||
| 628 | 5.0238e-09, 5.4027e-09, 5.8303e-09, 6.3208e-09, 6.8878e-09, // f04150 | |||
| 629 | 7.5419e-09, 8.3130e-09, 9.1952e-09, 1.0228e-08, 1.1386e-08, // f04170 | |||
| 630 | 1.2792e-08, 1.4521e-08, 1.6437e-08, 1.8674e-08, 2.1160e-08, // f04180 | |||
| 631 | 2.4506e-08, 2.8113e-08, 3.2636e-08, 3.7355e-08, 4.2234e-08, // f04190 | |||
| 632 | 4.9282e-08, 5.7358e-08, 6.6743e-08, 7.8821e-08, 9.4264e-08, // f04200 | |||
| 633 | 1.1542e-07, 1.3684e-07, 1.6337e-07, 2.0056e-07, 2.3252e-07, // f04210 | |||
| 634 | 2.6127e-07, 2.9211e-07, 3.3804e-07, 3.7397e-07, 3.8205e-07, // f04220 | |||
| 635 | 3.8810e-07, 3.9499e-07, 3.9508e-07, 3.7652e-07, 3.5859e-07, // f04230 | |||
| 636 | 3.6198e-07, 3.7871e-07, 4.0925e-07, 4.2717e-07, 4.8241e-07, // f04240 | |||
| 637 | 5.2008e-07, 5.6530e-07, 5.9531e-07, 6.1994e-07, 6.5080e-07, // f04250 | |||
| 638 | 6.6355e-07, 6.9193e-07, 6.9930e-07, 7.3058e-07, 7.4678e-07, // f04260 | |||
| 639 | 7.9193e-07, 8.3627e-07, 9.1267e-07, 1.0021e-06, 1.1218e-06, // f04280 | |||
| 640 | 1.2899e-06, 1.4447e-06, 1.7268e-06, 2.0025e-06, 2.3139e-06, // f04290 | |||
| 641 | 2.5599e-06, 2.8920e-06, 3.3059e-06, 3.5425e-06, 3.9522e-06, // f04300 | |||
| 642 | 4.0551e-06, 4.2818e-06, 4.2892e-06, 4.4210e-06, 4.5614e-06, // f04310 | |||
| 643 | 4.6739e-06, 4.9482e-06, 5.1118e-06, 5.0986e-06, 4.9417e-06, // f04320 | |||
| 644 | 4.9022e-06, 4.8449e-06, 4.8694e-06, 4.8111e-06, 4.9378e-06, // f04330 | |||
| 645 | 5.3231e-06, 5.7362e-06, 6.2350e-06, 6.0951e-06, 5.7281e-06, // f04340 | |||
| 646 | 5.4585e-06, 4.9032e-06, 4.3009e-06, 3.4776e-06, 2.8108e-06, // f04350 | |||
| 647 | 2.2993e-06, 1.7999e-06, 1.3870e-06, 1.0750e-06, 8.5191e-07, // f04360 | |||
| 648 | 6.7951e-07, 5.5336e-07, 4.6439e-07, 4.0243e-07, 3.5368e-07, // f04370 | |||
| 649 | 3.1427e-07, 2.7775e-07, 2.4486e-07, 2.1788e-07, 1.9249e-07, // f04390 | |||
| 650 | 1.7162e-07, 1.5115e-07, 1.3478e-07, 1.2236e-07, 1.1139e-07, // f04400 | |||
| 651 | 1.0092e-07, 9.0795e-08, 8.2214e-08, 7.4691e-08, 6.7486e-08, // f04410 | |||
| 652 | 6.0414e-08, 5.4584e-08, 4.8754e-08, 4.3501e-08, 3.8767e-08, // f04420 | |||
| 653 | 3.4363e-08, 3.0703e-08, 2.7562e-08, 2.4831e-08, 2.2241e-08, // f04430 | |||
| 654 | 1.9939e-08, 1.8049e-08, 1.6368e-08, 1.4863e-08, 1.3460e-08, // f04440 | |||
| 655 | 1.2212e-08, 1.1155e-08, 1.0185e-08, 9.3417e-09, 8.5671e-09, // f04450 | |||
| 656 | 7.8292e-09, 7.1749e-09, 6.5856e-09, 6.0588e-09, 5.5835e-09, // f04460 | |||
| 657 | 5.1350e-09, 4.7395e-09, 4.3771e-09, 4.0476e-09, 3.7560e-09, // f04470 | |||
| 658 | 3.4861e-09, 3.2427e-09, 3.0240e-09, 2.8278e-09, 2.6531e-09, // f04480 | |||
| 659 | 2.4937e-09, 2.3511e-09, 2.2245e-09, 2.1133e-09, 2.0159e-09, // f04500 | |||
| 660 | 1.9330e-09, 1.8669e-09, 1.8152e-09, 1.7852e-09, 1.7752e-09, // f04510 | |||
| 661 | 1.7823e-09, 1.8194e-09, 1.8866e-09, 1.9759e-09, 2.0736e-09, // f04520 | |||
| 662 | 2.2083e-09, 2.3587e-09, 2.4984e-09, 2.6333e-09, 2.8160e-09, // f04530 | |||
| 663 | 3.0759e-09, 3.3720e-09, 3.6457e-09, 4.0668e-09, 4.4541e-09, // f04540 | |||
| 664 | 4.7976e-09, 5.0908e-09, 5.4811e-09, 6.1394e-09, 6.3669e-09, // f04550 | |||
| 665 | 6.5714e-09, 6.8384e-09, 7.1918e-09, 7.3741e-09, 7.2079e-09, // f04560 | |||
| 666 | 7.2172e-09, 7.2572e-09, 7.3912e-09, 7.6188e-09, 8.3291e-09, // f04570 | |||
| 667 | 8.7885e-09, 9.2412e-09, 1.0021e-08, 1.0752e-08, 1.1546e-08, // f04580 | |||
| 668 | 1.1607e-08, 1.1949e-08, 1.2346e-08, 1.2516e-08, 1.2826e-08, // f04590 | |||
| 669 | 1.3053e-08, 1.3556e-08, 1.4221e-08, 1.5201e-08, 1.6661e-08, // f04610 | |||
| 670 | 1.8385e-08, 2.0585e-08, 2.3674e-08, 2.7928e-08, 3.3901e-08, // f04620 | |||
| 671 | 4.1017e-08, 4.9595e-08, 6.0432e-08, 7.6304e-08, 9.0764e-08, // f04630 | |||
| 672 | 1.0798e-07, 1.2442e-07, 1.4404e-07, 1.6331e-07, 1.8339e-07, // f04640 | |||
| 673 | 2.0445e-07, 2.2288e-07, 2.3083e-07, 2.3196e-07, 2.3919e-07, // f04650 | |||
| 674 | 2.3339e-07, 2.3502e-07, 2.3444e-07, 2.6395e-07, 2.9928e-07, // f04660 | |||
| 675 | 3.0025e-07, 3.0496e-07, 3.1777e-07, 3.4198e-07, 3.4739e-07, // f04670 | |||
| 676 | 3.2696e-07, 3.4100e-07, 3.5405e-07, 3.7774e-07, 3.8285e-07, // f04680 | |||
| 677 | 3.6797e-07, 3.5800e-07, 3.2283e-07, 2.9361e-07, 2.4881e-07, // f04690 | |||
| 678 | 2.0599e-07, 1.7121e-07, 1.3641e-07, 1.1111e-07, 8.9413e-08, // f04700 | |||
| 679 | 7.3455e-08, 6.2078e-08, 5.2538e-08, 4.5325e-08, 3.9005e-08, // f04720 | |||
| 680 | 3.4772e-08, 3.1203e-08, 2.8132e-08, 2.5250e-08, 2.2371e-08, // f04730 | |||
| 681 | 2.0131e-08, 1.7992e-08, 1.6076e-08, 1.4222e-08, 1.2490e-08, // f04740 | |||
| 682 | 1.1401e-08, 1.0249e-08, 9.2279e-09, 8.5654e-09, 7.6227e-09, // f04750 | |||
| 683 | 6.9648e-09, 6.2466e-09, 5.7252e-09, 5.3800e-09, 4.6960e-09, // f04760 | |||
| 684 | 4.2194e-09, 3.7746e-09, 3.3813e-09, 3.0656e-09, 2.6885e-09, // f04770 | |||
| 685 | 2.4311e-09, 2.1572e-09, 1.8892e-09, 1.7038e-09, 1.4914e-09, // f04780 | |||
| 686 | 1.3277e-09, 1.1694e-09, 1.0391e-09, 9.2779e-10, 8.3123e-10, // f04790 | |||
| 687 | 7.4968e-10, 6.8385e-10, 6.2915e-10, 5.7784e-10, 5.2838e-10, // f04800 | |||
| 688 | 4.8382e-10, 4.4543e-10, 4.1155e-10, 3.7158e-10, 3.3731e-10, // f04810 | |||
| 689 | 3.0969e-10, 2.8535e-10, 2.6416e-10, 2.4583e-10, 2.2878e-10, // f04830 | |||
| 690 | 2.1379e-10, 2.0073e-10, 1.8907e-10, 1.7866e-10, 1.6936e-10, // f04840 | |||
| 691 | 1.6119e-10, 1.5424e-10, 1.4847e-10, 1.4401e-10, 1.4068e-10, // f04850 | |||
| 692 | 1.3937e-10, 1.3943e-10, 1.4281e-10, 1.4766e-10, 1.5701e-10, // f04860 | |||
| 693 | 1.7079e-10, 1.8691e-10, 2.0081e-10, 2.1740e-10, 2.4847e-10, // f04870 | |||
| 694 | 2.6463e-10, 2.7087e-10, 2.7313e-10, 2.8352e-10, 2.9511e-10, // f04880 | |||
| 695 | 2.8058e-10, 2.7227e-10, 2.7356e-10, 2.8012e-10, 2.8034e-10, // f04890 | |||
| 696 | 2.9031e-10, 3.1030e-10, 3.3745e-10, 3.8152e-10, 4.0622e-10, // f04900 | |||
| 697 | 4.2673e-10, 4.3879e-10, 4.5488e-10, 4.7179e-10, 4.6140e-10, // f04910 | |||
| 698 | 4.6339e-10, 4.6716e-10, 4.7024e-10, 4.7931e-10, 4.8503e-10, // f04920 | |||
| 699 | 4.9589e-10, 4.9499e-10, 5.0363e-10, 5.3184e-10, 5.6451e-10, // f04940 | |||
| 700 | 6.0932e-10, 6.6469e-10, 7.4076e-10, 8.3605e-10, 9.4898e-10, // f04950 | |||
| 701 | 1.0935e-09, 1.2593e-09, 1.4913e-09, 1.8099e-09, 2.1842e-09, // f04960 | |||
| 702 | 2.7284e-09, 3.2159e-09, 3.7426e-09, 4.5226e-09, 5.3512e-09, // f04970 | |||
| 703 | 6.1787e-09, 6.8237e-09, 7.9421e-09, 9.0002e-09, 9.6841e-09, // f04980 | |||
| 704 | 9.9558e-09, 1.0232e-08, 1.0591e-08, 1.0657e-08, 1.0441e-08, // f04990 | |||
| 705 | 1.0719e-08, 1.1526e-08, 1.2962e-08, 1.4336e-08, 1.6150e-08, // f05000 | |||
| 706 | 1.8417e-08, 2.0725e-08, 2.3426e-08, 2.5619e-08, 2.7828e-08, // f05010 | |||
| 707 | 3.0563e-08, 3.3438e-08, 3.6317e-08, 4.0400e-08, 4.4556e-08, // f05020 | |||
| 708 | 5.0397e-08, 5.3315e-08, 5.9185e-08, 6.5311e-08, 6.9188e-08, // f05030 | |||
| 709 | 7.7728e-08, 7.9789e-08, 8.6598e-08, 8.7768e-08, 9.1773e-08, // f05050 | |||
| 710 | 9.7533e-08, 1.0007e-07, 1.0650e-07, 1.0992e-07, 1.0864e-07, // f05060 | |||
| 711 | 1.0494e-07, 1.0303e-07, 1.0031e-07, 1.0436e-07, 1.0537e-07, // f05070 | |||
| 712 | 1.1184e-07, 1.2364e-07, 1.3651e-07, 1.4881e-07, 1.4723e-07, // f05080 | |||
| 713 | 1.4118e-07, 1.3371e-07, 1.1902e-07, 1.0007e-07, 7.9628e-08, // f05090 | |||
| 714 | 6.4362e-08, 5.0243e-08, 3.8133e-08, 2.9400e-08, 2.3443e-08, // f05100 | |||
| 715 | 1.9319e-08, 1.6196e-08, 1.4221e-08, 1.2817e-08, 1.1863e-08, // f05110 | |||
| 716 | 1.1383e-08, 1.1221e-08, 1.1574e-08, 1.1661e-08, 1.2157e-08, // f05120 | |||
| 717 | 1.2883e-08, 1.3295e-08, 1.4243e-08, 1.4240e-08, 1.4614e-08, // f05130 | |||
| 718 | 1.4529e-08, 1.4685e-08, 1.4974e-08, 1.4790e-08, 1.4890e-08, // f05140 | |||
| 719 | 1.4704e-08, 1.4142e-08, 1.3374e-08, 1.2746e-08, 1.2172e-08, // f05160 | |||
| 720 | 1.2336e-08, 1.2546e-08, 1.3065e-08, 1.4090e-08, 1.5215e-08, // f05170 | |||
| 721 | 1.6540e-08, 1.6144e-08, 1.5282e-08, 1.4358e-08, 1.2849e-08, // f05180 | |||
| 722 | 1.0998e-08, 8.6956e-09, 7.0881e-09, 5.5767e-09, 4.2792e-09, // f05190 | |||
| 723 | 3.2233e-09, 2.5020e-09, 1.9985e-09, 1.5834e-09, 1.3015e-09, // f05200 | |||
| 724 | 1.0948e-09, 9.4141e-10, 8.1465e-10, 7.1517e-10, 6.2906e-10, // f05210 | |||
| 725 | 5.5756e-10, 4.9805e-10, 4.3961e-10, 3.9181e-10, 3.5227e-10, // f05220 | |||
| 726 | 3.1670e-10, 2.8667e-10, 2.5745e-10, 2.3212e-10, 2.0948e-10, // f05230 | |||
| 727 | 1.8970e-10, 1.7239e-10, 1.5659e-10, 1.4301e-10, 1.3104e-10, // f05240 | |||
| 728 | 1.2031e-10, 1.1095e-10, 1.0262e-10, 9.5130e-11, 8.8595e-11, // f05250 | |||
| 729 | 8.2842e-11, 7.7727e-11, 7.3199e-11, 6.9286e-11, 6.5994e-11, // f05270 | |||
| 730 | 6.3316e-11, 6.1244e-11, 5.9669e-11, 5.8843e-11, 5.8832e-11, // f05280 | |||
| 731 | 5.9547e-11, 6.1635e-11, 6.4926e-11, 7.0745e-11, 7.8802e-11, // f05290 | |||
| 732 | 8.6724e-11, 1.0052e-10, 1.1575e-10, 1.3626e-10, 1.5126e-10, // f05300 | |||
| 733 | 1.6751e-10, 1.9239e-10, 2.1748e-10, 2.2654e-10, 2.2902e-10, // f05310 | |||
| 734 | 2.3240e-10, 2.4081e-10, 2.3930e-10, 2.2378e-10, 2.2476e-10, // f05320 | |||
| 735 | 2.2791e-10, 2.4047e-10, 2.5305e-10, 2.8073e-10, 3.1741e-10, // f05330 | |||
| 736 | 3.6592e-10, 4.1495e-10, 4.6565e-10, 5.0990e-10, 5.5607e-10, // f05340 | |||
| 737 | 6.1928e-10, 6.6779e-10, 7.3350e-10, 8.1434e-10, 8.9635e-10, // f05350 | |||
| 738 | 9.9678e-10, 1.1256e-09, 1.2999e-09, 1.4888e-09, 1.7642e-09, // f05360 | |||
| 739 | 1.9606e-09, 2.2066e-09, 2.4601e-09, 2.7218e-09, 3.0375e-09, // f05380 | |||
| 740 | 3.1591e-09, 3.2852e-09, 3.2464e-09, 3.3046e-09, 3.2710e-09, // f05390 | |||
| 741 | 3.2601e-09, 3.3398e-09, 3.7446e-09, 4.0795e-09, 4.0284e-09, // f05400 | |||
| 742 | 4.0584e-09, 4.1677e-09, 4.5358e-09, 4.4097e-09, 4.2744e-09, // f05410 | |||
| 743 | 4.5449e-09, 4.8147e-09, 5.2656e-09, 5.2476e-09, 5.0275e-09, // f05420 | |||
| 744 | 4.7968e-09, 4.3654e-09, 3.9530e-09, 3.2447e-09, 2.6489e-09, // f05430 | |||
| 745 | 2.1795e-09, 1.7880e-09, 1.4309e-09, 1.1256e-09, 9.1903e-10, // f05440 | |||
| 746 | 7.6533e-10, 6.3989e-10, 5.5496e-10, 4.9581e-10, 4.5722e-10, // f05450 | |||
| 747 | 4.3898e-10, 4.3505e-10, 4.3671e-10, 4.5329e-10, 4.6827e-10, // f05460 | |||
| 748 | 4.9394e-10, 5.1122e-10, 5.1649e-10, 5.0965e-10, 4.9551e-10, // f05470 | |||
| 749 | 4.8928e-10, 4.7947e-10, 4.7989e-10, 4.9071e-10, 4.8867e-10, // f05490 | |||
| 750 | 4.7260e-10, 4.5756e-10, 4.5400e-10, 4.5993e-10, 4.4042e-10, // f05500 | |||
| 751 | 4.3309e-10, 4.4182e-10, 4.6735e-10, 5.0378e-10, 5.2204e-10, // f05510 | |||
| 752 | 5.0166e-10, 4.6799e-10, 4.3119e-10, 3.8803e-10, 3.3291e-10, // f05520 | |||
| 753 | 2.6289e-10, 2.1029e-10, 1.7011e-10, 1.3345e-10, 1.0224e-10, // f05530 | |||
| 754 | 7.8207e-11, 6.2451e-11, 5.0481e-11, 4.1507e-11, 3.5419e-11, // f05540 | |||
| 755 | 3.0582e-11, 2.6900e-11, 2.3778e-11, 2.1343e-11, 1.9182e-11, // f05550 | |||
| 756 | 1.7162e-11, 1.5391e-11, 1.3877e-11, 1.2619e-11, 1.1450e-11, // f05560 | |||
| 757 | 1.0461e-11, 9.6578e-12, 8.9579e-12, 8.3463e-12, 7.8127e-12, // f05570 | |||
| 758 | 7.3322e-12, 6.9414e-12, 6.6037e-12, 6.3285e-12, 6.1095e-12, // f05580 | |||
| 759 | 5.9387e-12, 5.8118e-12, 5.7260e-12, 5.6794e-12, 5.6711e-12, // f05600 | |||
| 760 | 5.7003e-12, 5.7670e-12, 5.8717e-12, 6.0151e-12, 6.1984e-12, // f05610 | |||
| 761 | 6.4232e-12, 6.6918e-12, 7.0065e-12, 7.3705e-12, 7.7873e-12, // f05620 | |||
| 762 | 8.2612e-12, 8.7972e-12, 9.4009e-12, 1.0079e-11, 1.0840e-11, // f05630 | |||
| 763 | 1.1692e-11, 1.2648e-11, 1.3723e-11, 1.4935e-11, 1.6313e-11, // f05640 | |||
| 764 | 1.7905e-11, 1.9740e-11, 2.1898e-11, 2.4419e-11, 2.7426e-11, // f05650 | |||
| 765 | 3.0869e-11, 3.4235e-11, 3.7841e-11, 4.1929e-11, 4.6776e-11, // f05660 | |||
| 766 | 5.2123e-11, 5.8497e-11, 6.5294e-11, 7.4038e-11, 8.4793e-11, // f05670 | |||
| 767 | 9.6453e-11, 1.1223e-10, 1.2786e-10, 1.4882e-10, 1.7799e-10, // f05680 | |||
| 768 | 2.0766e-10, 2.4523e-10, 2.8591e-10, 3.3386e-10, 4.0531e-10, // f05690 | |||
| 769 | 4.7663e-10, 5.4858e-10, 6.3377e-10, 7.1688e-10, 8.4184e-10, // f05710 | |||
| 770 | 9.5144e-10, 1.0481e-09, 1.1356e-09, 1.2339e-09, 1.3396e-09, // f05720 | |||
| 771 | 1.4375e-09, 1.5831e-09, 1.7323e-09, 1.9671e-09, 2.2976e-09, // f05730 | |||
| 772 | 2.6679e-09, 3.0777e-09, 3.4321e-09, 3.8192e-09, 4.2711e-09, // f05740 | |||
| 773 | 4.4903e-09, 4.8931e-09, 5.2253e-09, 5.4040e-09, 5.6387e-09, // f05750 | |||
| 774 | 5.6704e-09, 6.0345e-09, 6.1079e-09, 6.2576e-09, 6.4039e-09, // f05760 | |||
| 775 | 6.3776e-09, 6.1878e-09, 5.8616e-09, 5.7036e-09, 5.5840e-09, // f05770 | |||
| 776 | 5.6905e-09, 5.8931e-09, 6.2478e-09, 6.8291e-09, 7.4528e-09, // f05780 | |||
| 777 | 7.6078e-09, 7.3898e-09, 6.7573e-09, 5.9827e-09, 5.0927e-09, // f05790 | |||
| 778 | 4.0099e-09, 3.1933e-09, 2.4296e-09, 1.8485e-09, 1.4595e-09, // f05800 | |||
| 779 | 1.2017e-09, 1.0164e-09, 8.7433e-10, 7.7108e-10, 7.0049e-10, // f05820 | |||
| 780 | 6.5291e-10, 6.1477e-10, 5.9254e-10, 5.8150e-10, 5.7591e-10, // f05830 | |||
| 781 | 5.8490e-10, 5.8587e-10, 5.9636e-10, 6.2408e-10, 6.5479e-10, // f05840 | |||
| 782 | 7.0480e-10, 7.2313e-10, 7.5524e-10, 8.0863e-10, 8.3386e-10, // f05850 | |||
| 783 | 9.2342e-10, 9.6754e-10, 1.0293e-09, 1.0895e-09, 1.1330e-09, // f05860 | |||
| 784 | 1.2210e-09, 1.2413e-09, 1.2613e-09, 1.2671e-09, 1.2225e-09, // f05870 | |||
| 785 | 1.1609e-09, 1.0991e-09, 1.0600e-09, 1.0570e-09, 1.0818e-09, // f05880 | |||
| 786 | 1.1421e-09, 1.2270e-09, 1.3370e-09, 1.4742e-09, 1.4946e-09, // f05890 | |||
| 787 | 1.4322e-09, 1.3210e-09, 1.1749e-09, 1.0051e-09, 7.8387e-10, // f05900 | |||
| 788 | 6.1844e-10, 4.6288e-10, 3.4164e-10, 2.5412e-10, 1.9857e-10, // f05910 | |||
| 789 | 1.5876e-10, 1.2966e-10, 1.0920e-10, 9.4811e-11, 8.3733e-11, // f05930 | |||
| 790 | 7.3906e-11, 6.7259e-11, 6.1146e-11, 5.7119e-11, 5.3546e-11, // f05940 | |||
| 791 | 4.8625e-11, 4.4749e-11, 4.1089e-11, 3.7825e-11, 3.4465e-11, // f05950 | |||
| 792 | 3.1018e-11, 2.8109e-11, 2.5610e-11, 2.2859e-11, 2.0490e-11, // f05960 | |||
| 793 | 1.8133e-11, 1.5835e-11, 1.3949e-11, 1.2295e-11, 1.0799e-11, // f05970 | |||
| 794 | 9.6544e-12, 8.7597e-12, 7.9990e-12, 7.3973e-12, 6.9035e-12, // f05980 | |||
| 795 | 6.4935e-12, 6.1195e-12, 5.8235e-12, 5.5928e-12, 5.4191e-12, // f05990 | |||
| 796 | 5.2993e-12, 5.2338e-12, 5.2272e-12, 5.2923e-12, 5.4252e-12, // f06000 | |||
| 797 | 5.6523e-12, 5.9433e-12, 6.3197e-12, 6.9016e-12, 7.5016e-12, // f06010 | |||
| 798 | 8.2885e-12, 9.4050e-12, 1.0605e-11, 1.2257e-11, 1.3622e-11, // f06020 | |||
| 799 | 1.5353e-11, 1.7543e-11, 1.9809e-11, 2.2197e-11, 2.4065e-11, // f06040 | |||
| 800 | 2.6777e-11, 2.9751e-11, 3.2543e-11, 3.5536e-11, 3.9942e-11, // f06050 | |||
| 801 | 4.6283e-11, 5.4556e-11, 6.5490e-11, 7.6803e-11, 9.0053e-11, // f06060 | |||
| 802 | 1.0852e-10, 1.2946e-10, 1.4916e-10, 1.7748e-10, 2.0073e-10, // f06070 | |||
| 803 | 2.2485e-10, 2.5114e-10, 2.7715e-10, 3.1319e-10, 3.3305e-10, // f06080 | |||
| 804 | 3.5059e-10, 3.5746e-10, 3.6311e-10, 3.7344e-10, 3.6574e-10, // f06090 | |||
| 805 | 3.7539e-10, 3.9434e-10, 4.3510e-10, 4.3340e-10, 4.2588e-10, // f06100 | |||
| 806 | 4.3977e-10, 4.6062e-10, 4.7687e-10, 4.6457e-10, 4.8578e-10, // f06110 | |||
| 807 | 5.2344e-10, 5.6752e-10, 5.8702e-10, 5.6603e-10, 5.3784e-10, // f06120 | |||
| 808 | 4.9181e-10, 4.3272e-10, 3.5681e-10, 2.8814e-10, 2.3320e-10, // f06130 | |||
| 809 | 1.8631e-10, 1.4587e-10, 1.1782e-10, 9.8132e-11, 8.2528e-11, // f06150 | |||
| 810 | 6.9174e-11, 6.1056e-11, 5.3459e-11, 4.7116e-11, 4.1878e-11, // f06160 | |||
| 811 | 3.8125e-11, 3.6347e-11, 3.5071e-11, 3.3897e-11, 3.3541e-11, // f06170 | |||
| 812 | 3.3563e-11, 3.5469e-11, 3.8111e-11, 3.8675e-11, 4.1333e-11, // f06180 | |||
| 813 | 4.3475e-11, 4.6476e-11, 4.9761e-11, 5.1380e-11, 5.4135e-11, // f06190 | |||
| 814 | 5.3802e-11, 5.5158e-11, 5.6864e-11, 5.9311e-11, 6.3827e-11, // f06200 | |||
| 815 | 6.7893e-11, 6.8230e-11, 6.6694e-11, 6.6018e-11, 6.4863e-11, // f06210 | |||
| 816 | 6.5893e-11, 6.3813e-11, 6.4741e-11, 6.8630e-11, 7.0255e-11, // f06220 | |||
| 817 | 7.0667e-11, 6.8810e-11, 6.4104e-11, 5.8136e-11, 4.7242e-11, // f06230 | |||
| 818 | 3.7625e-11, 3.1742e-11, 2.5581e-11, 1.8824e-11, 1.3303e-11, // f06240 | |||
| 819 | 9.6919e-12, 7.5353e-12, 6.0986e-12, 5.0742e-12, 4.3094e-12, // f06260 | |||
| 820 | 3.7190e-12, 3.2520e-12, 2.8756e-12, 2.5680e-12, 2.3139e-12, // f06270 | |||
| 821 | 2.1025e-12, 1.9257e-12, 1.7777e-12, 1.6539e-12, 1.5508e-12, // f06280 | |||
| 822 | 1.4657e-12, 1.3966e-12, 1.3417e-12, 1.2998e-12, 1.2700e-12, // f06290 | |||
| 823 | 1.2514e-12, 1.2437e-12, 1.2463e-12, 1.2592e-12, 1.2823e-12, // f06300 | |||
| 824 | 1.3157e-12, 1.3596e-12, 1.4144e-12, 1.4806e-12, 1.5588e-12, // f06310 | |||
| 825 | 1.6497e-12, 1.7544e-12, 1.8738e-12, 2.0094e-12, 2.1626e-12, // f06320 | |||
| 826 | 2.3354e-12, 2.5297e-12, 2.7483e-12, 2.9941e-12, 3.2708e-12, // f06330 | |||
| 827 | 3.5833e-12, 3.9374e-12, 4.3415e-12, 4.8079e-12, 5.3602e-12, // f06340 | |||
| 828 | 5.9816e-12, 6.7436e-12, 7.6368e-12, 8.6812e-12, 9.8747e-12, // f06350 | |||
| 829 | 1.1350e-11, 1.3181e-11, 1.5406e-11, 1.7868e-11, 2.0651e-11, // f06370 | |||
| 830 | 2.4504e-11, 2.9184e-11, 3.4159e-11, 3.9979e-11, 4.8704e-11, // f06380 | |||
| 831 | 5.7856e-11, 6.7576e-11, 7.9103e-11, 9.4370e-11, 1.1224e-10, // f06390 | |||
| 832 | 1.3112e-10, 1.5674e-10, 1.8206e-10, 2.0576e-10, 2.3187e-10, // f06400 | |||
| 833 | 2.7005e-10, 3.0055e-10, 3.3423e-10, 3.6956e-10, 3.8737e-10, // f06410 | |||
| 834 | 4.2630e-10, 4.5154e-10, 4.8383e-10, 5.3582e-10, 5.8109e-10, // f06420 | |||
| 835 | 6.3741e-10, 6.3874e-10, 6.3870e-10, 6.5818e-10, 6.5056e-10, // f06430 | |||
| 836 | 6.5291e-10, 6.3159e-10, 6.3984e-10, 6.4549e-10, 6.5444e-10, // f06440 | |||
| 837 | 6.7035e-10, 6.7665e-10, 6.9124e-10, 6.8451e-10, 6.9255e-10, // f06450 | |||
| 838 | 6.9923e-10, 7.0396e-10, 6.7715e-10, 6.0371e-10, 5.3774e-10, // f06460 | |||
| 839 | 4.6043e-10, 3.7635e-10, 2.9484e-10, 2.2968e-10, 1.8185e-10, // f06480 | |||
| 840 | 1.4191e-10, 1.1471e-10, 9.4790e-11, 7.9613e-11, 6.7989e-11, // f06490 | |||
| 841 | 5.9391e-11, 5.2810e-11, 4.7136e-11, 4.2618e-11, 3.8313e-11, // f06500 | |||
| 842 | 3.4686e-11, 3.1669e-11, 2.9110e-11, 2.6871e-11, 2.5074e-11, // f06510 | |||
| 843 | 2.4368e-11, 2.3925e-11, 2.4067e-11, 2.4336e-11, 2.4704e-11, // f06520 | |||
| 844 | 2.5823e-11, 2.7177e-11, 2.9227e-11, 3.1593e-11, 3.5730e-11, // f06530 | |||
| 845 | 4.0221e-11, 4.3994e-11, 4.8448e-11, 5.3191e-11, 5.8552e-11, // f06540 | |||
| 846 | 6.3458e-11, 6.6335e-11, 7.2457e-11, 7.9091e-11, 8.2234e-11, // f06550 | |||
| 847 | 8.7668e-11, 8.7951e-11, 9.2952e-11, 9.6157e-11, 9.5926e-11, // f06560 | |||
| 848 | 1.0120e-10, 1.0115e-10, 9.9577e-11, 9.6633e-11, 9.2891e-11, // f06570 | |||
| 849 | 9.3315e-11, 9.5584e-11, 1.0064e-10, 1.0509e-10, 1.1455e-10, // f06590 | |||
| 850 | 1.2443e-10, 1.2963e-10, 1.2632e-10, 1.1308e-10, 1.0186e-10, // f06600 | |||
| 851 | 8.5880e-11, 6.7863e-11, 5.1521e-11, 3.7780e-11, 2.8842e-11, // f06610 | |||
| 852 | 2.2052e-11, 1.7402e-11, 1.4406e-11, 1.1934e-11, 1.0223e-11, // f06620 | |||
| 853 | 8.9544e-12, 7.9088e-12, 7.0675e-12, 6.2222e-12, 5.6051e-12, // f06630 | |||
| 854 | 5.0502e-12, 4.5578e-12, 4.2636e-12, 3.9461e-12, 3.7599e-12, // f06640 | |||
| 855 | 3.5215e-12, 3.2467e-12, 3.0018e-12, 2.6558e-12, 2.3928e-12, // f06650 | |||
| 856 | 2.0707e-12, 1.7575e-12, 1.5114e-12, 1.2941e-12, 1.1004e-12, // f06660 | |||
| 857 | 9.5175e-13, 8.2894e-13, 7.3253e-13, 6.5551e-13, 5.9098e-13, // f06670 | |||
| 858 | 5.3548e-13, 4.8697e-13, 4.4413e-13, 4.0600e-13, 3.7188e-13, // f06680 | |||
| 859 | 3.4121e-13, 3.1356e-13, 2.8856e-13, 2.6590e-13, 2.4533e-13, // f06700 | |||
| 860 | 2.2663e-13, 2.0960e-13, 1.9407e-13, 1.7990e-13, 1.6695e-13, // f06710 | |||
| 861 | 1.5512e-13, 1.4429e-13, 1.3437e-13, 1.2527e-13, 1.1693e-13, // f06720 | |||
| 862 | 1.0927e-13, 1.0224e-13, 9.5767e-14, 8.9816e-14, 8.4335e-14, // f06730 | |||
| 863 | 7.9285e-14, 7.4626e-14, 7.0325e-14, 6.6352e-14, 6.2676e-14, // f06740 | |||
| 864 | 5.9274e-14, 5.6121e-14, 5.3195e-14, 5.0479e-14, 4.7953e-14, // f06750 | |||
| 865 | 4.5602e-14, 4.3411e-14, 4.1367e-14, 3.9456e-14, 3.7670e-14, // f06760 | |||
| 866 | 3.5996e-14, 3.4427e-14, 3.2952e-14, 3.1566e-14, 3.0261e-14, // f06770 | |||
| 867 | 2.9030e-14, 2.7868e-14, 2.6770e-14, 2.5730e-14, 2.4745e-14, // f06780 | |||
| 868 | 2.3809e-14, 2.2921e-14, 2.2076e-14, 2.1271e-14, 2.0504e-14, // f06790 | |||
| 869 | 1.9772e-14, 1.9073e-14, 1.8404e-14, 1.7764e-14, 1.7151e-14, // f06810 | |||
| 870 | 1.6564e-14, 1.6000e-14, 1.5459e-14, 1.4939e-14, 1.4439e-14, // f06820 | |||
| 871 | 1.3958e-14, 1.3495e-14, 1.3049e-14, 1.2620e-14, 1.2206e-14, // f06830 | |||
| 872 | 1.1807e-14, 1.1422e-14, 1.1050e-14, 1.0691e-14, 1.0345e-14, // f06840 | |||
| 873 | 1.0010e-14, 9.6870e-15, 9.3747e-15, 9.0727e-15, 8.7808e-15, // f06850 | |||
| 874 | 8.4986e-15, 8.2257e-15, 7.9617e-15, 7.7064e-15, 7.4594e-15, // f06860 | |||
| 875 | 7.2204e-15, 6.9891e-15, 6.7653e-15, 6.5488e-15, 6.3392e-15, // f06870 | |||
| 876 | 6.1363e-15, 5.9399e-15, 5.7499e-15, 5.5659e-15, 5.3878e-15, // f06880 | |||
| 877 | 5.2153e-15, 5.0484e-15, 4.8868e-15, 4.7303e-15, 4.5788e-15, // f06890 | |||
| 878 | 4.4322e-15, 4.2902e-15, 4.1527e-15, 4.0196e-15, 3.8907e-15, // f06900 | |||
| 879 | 3.7659e-15, 3.6451e-15, 3.5281e-15, 3.4149e-15, 3.3052e-15, // f06920 | |||
| 880 | 3.1991e-15, 3.0963e-15, 2.9967e-15, 2.9004e-15, 2.8071e-15, // f06930 | |||
| 881 | 2.7167e-15, 2.6293e-15, 2.5446e-15, 2.4626e-15, 2.3833e-15, // f06940 | |||
| 882 | 2.3064e-15, 2.2320e-15, 2.1600e-15, 2.0903e-15, 2.0228e-15, // f06950 | |||
| 883 | 1.9574e-15, 1.8942e-15, 1.8329e-15, 1.7736e-15, 1.7163e-15, // f06960 | |||
| 884 | 1.6607e-15, 1.6069e-15, 1.5548e-15, 1.5044e-15, 1.4557e-15, // f06970 | |||
| 885 | 1.4084e-15, 1.3627e-15, 1.3185e-15, 1.2757e-15, 1.2342e-15, // f06980 | |||
| 886 | 1.1941e-15, 1.1552e-15, 1.1177e-15, 1.0813e-15, 1.0461e-15, // f06990 | |||
| 887 | 1.0120e-15, 9.7900e-16, 9.4707e-16, 9.1618e-16, 8.8628e-16, // f07000 | |||
| 888 | 8.5734e-16, 8.2933e-16, 8.0223e-16, 7.7600e-16, 7.5062e-16, // f07010 | |||
| 889 | 7.2606e-16, 7.0229e-16, 6.7929e-16, 6.5703e-16, 6.3550e-16, // f07030 | |||
| 890 | 6.1466e-16, 5.9449e-16, 5.7498e-16, 5.5610e-16, 5.3783e-16, // f07040 | |||
| 891 | 5.2015e-16, 5.0305e-16, 4.8650e-16, 4.7049e-16, 4.5500e-16, // f07050 | |||
| 892 | 4.4002e-16, 4.2552e-16, 4.1149e-16, 3.9792e-16, 3.8479e-16, // f07060 | |||
| 893 | 3.7209e-16, 3.5981e-16, 3.4792e-16, 3.3642e-16, 3.2530e-16, // f07070 | |||
| 894 | 3.1454e-16, 3.0413e-16, 2.9406e-16, 2.8432e-16, 2.7490e-16, // f07080 | |||
| 895 | 2.6579e-16, 2.5697e-16, 2.4845e-16, 2.4020e-16, 2.3223e-16, // f07090 | |||
| 896 | 2.2451e-16, 2.1705e-16, 2.0984e-16, 2.0286e-16, 1.9611e-16, // f07100 | |||
| 897 | 1.8958e-16, 1.8327e-16, 1.7716e-16, 1.7126e-16, 1.6555e-16, // f07110 | |||
| 898 | 1.6003e-16, 1.5469e-16, 1.4952e-16, 1.4453e-16, 1.3970e-16, // f07120 | |||
| 899 | 1.3503e-16}; | |||
| 900 | ||||
| 901 | ||||
| 902 | ||||
| 903 | // H2O foreign continuum parameters at T=296 K for the CKD versions 0 to 2.4.2 | |||
| 904 | // date of last update: 06/28/82 | |||
| 905 | // units of (CM**3/MOL)*1.E-20 | |||
| 906 | const Numeric FH2O_ckd_0_v1 = -20.0; | |||
| 907 | const Numeric FH2O_ckd_0_v2 = 20000.0; | |||
| 908 | const Numeric FH2O_ckd_0_dv = 10.0; | |||
| 909 | const int FH2O_ckd_0_npt = 2003; | |||
| 910 | const double FH2O_ckd_0[FH2O_ckd_0_npt+addF77fields] = { | |||
| 911 | 0.0000e-00, 1.2859E-02, 1.1715E-02, | |||
| 912 | 1.1038E-02, 1.1715E-02, 1.2859E-02, 1.5326E-02, 1.6999E-02, // F12660 | |||
| 913 | 1.8321E-02, 1.9402E-02, 1.9570E-02, 1.9432E-02, 1.7572E-02, // F12670 | |||
| 914 | 1.6760E-02, 1.5480E-02, 1.3984E-02, 1.2266E-02, 1.0467E-02, // F12680 | |||
| 915 | 9.4526E-03, 8.0485E-03, 6.9484E-03, 6.1416E-03, 5.0941E-03, // F12690 | |||
| 916 | 4.4836E-03, 3.8133E-03, 3.4608E-03, 3.1487E-03, 2.4555E-03, // F12700 | |||
| 917 | 2.0977E-03, 1.7266E-03, 1.4920E-03, 1.2709E-03, 9.8081E-04, // F12710 | |||
| 918 | 8.5063E-04, 6.8822E-04, 5.3809E-04, 4.4679E-04, 3.3774E-04, // F12720 | |||
| 919 | 2.7979E-04, 2.1047E-04, 1.6511E-04, 1.2993E-04, 9.3033E-05, // F12730 | |||
| 920 | 7.4360E-05, 5.6428E-05, 4.5442E-05, 3.4575E-05, 2.7903E-05, // F12740 | |||
| 921 | 2.1374E-05, 1.6075E-05, 1.3022E-05, 1.0962E-05, 8.5959E-06, // F12750 | |||
| 922 | 6.9125E-06, 5.3808E-06, 4.3586E-06, 3.6394E-06, 2.9552E-06, // F12770 | |||
| 923 | 2.3547E-06, 1.8463E-06, 1.6036E-06, 1.3483E-06, 1.1968E-06, // F12780 | |||
| 924 | 1.0333E-06, 8.4484E-07, 6.7195E-07, 5.0947E-07, 4.2343E-07, // F12790 | |||
| 925 | 3.4453E-07, 2.7830E-07, 2.3063E-07, 1.9951E-07, 1.7087E-07, // F12800 | |||
| 926 | 1.4393E-07, 1.2575E-07, 1.0750E-07, 8.2325E-08, 5.7524E-08, // F12810 | |||
| 927 | 4.4482E-08, 3.8106E-08, 3.4315E-08, 2.9422E-08, 2.5069E-08, // F12820 | |||
| 928 | 2.2402E-08, 1.9349E-08, 1.6152E-08, 1.2208E-08, 8.9660E-09, // F12830 | |||
| 929 | 7.1322E-09, 6.1028E-09, 5.2938E-09, 4.5350E-09, 3.4977E-09, // F12840 | |||
| 930 | 2.9511E-09, 2.4734E-09, 2.0508E-09, 1.8507E-09, 1.6373E-09, // F12850 | |||
| 931 | 1.5171E-09, 1.3071E-09, 1.2462E-09, 1.2148E-09, 1.2590E-09, // F12860 | |||
| 932 | 1.3153E-09, 1.3301E-09, 1.4483E-09, 1.6944E-09, 2.0559E-09, // F12880 | |||
| 933 | 2.2954E-09, 2.6221E-09, 3.2606E-09, 4.2392E-09, 5.2171E-09, // F12890 | |||
| 934 | 6.2553E-09, 8.2548E-09, 9.5842E-09, 1.1280E-08, 1.3628E-08, // F12900 | |||
| 935 | 1.7635E-08, 2.1576E-08, 2.4835E-08, 3.0014E-08, 3.8485E-08, // F12910 | |||
| 936 | 4.7440E-08, 5.5202E-08, 7.0897E-08, 9.6578E-08, 1.3976E-07, // F12920 | |||
| 937 | 1.8391E-07, 2.3207E-07, 2.9960E-07, 4.0408E-07, 5.9260E-07, // F12930 | |||
| 938 | 7.8487E-07, 1.0947E-06, 1.4676E-06, 1.9325E-06, 2.6587E-06, // F12940 | |||
| 939 | 3.4534E-06, 4.4376E-06, 5.8061E-06, 7.0141E-06, 8.4937E-06, // F12950 | |||
| 940 | 1.0186E-05, 1.2034E-05, 1.3837E-05, 1.6595E-05, 1.9259E-05, // F12960 | |||
| 941 | 2.1620E-05, 2.3681E-05, 2.7064E-05, 3.2510E-05, 3.5460E-05, // F12970 | |||
| 942 | 3.9109E-05, 4.2891E-05, 4.7757E-05, 5.0981E-05, 5.0527E-05, // F12990 | |||
| 943 | 4.8618E-05, 4.4001E-05, 3.7982E-05, 3.2667E-05, 2.7794E-05, // F13000 | |||
| 944 | 2.4910E-05, 2.4375E-05, 2.7316E-05, 3.2579E-05, 3.5499E-05, // F13010 | |||
| 945 | 3.8010E-05, 4.1353E-05, 4.3323E-05, 4.3004E-05, 3.9790E-05, // F13020 | |||
| 946 | 3.7718E-05, 3.6360E-05, 3.2386E-05, 2.7409E-05, 2.3626E-05, // F13030 | |||
| 947 | 2.0631E-05, 1.8371E-05, 1.5445E-05, 1.2989E-05, 1.1098E-05, // F13040 | |||
| 948 | 9.6552E-06, 8.0649E-06, 7.2365E-06, 5.9137E-06, 5.2759E-06, // F13050 | |||
| 949 | 4.8860E-06, 4.1321E-06, 3.5918E-06, 2.7640E-06, 2.4892E-06, // F13060 | |||
| 950 | 2.1018E-06, 1.7848E-06, 1.5855E-06, 1.3569E-06, 1.1986E-06, // F13070 | |||
| 951 | 9.4693E-07, 7.4097E-07, 6.3443E-07, 4.8131E-07, 4.0942E-07, // F13080 | |||
| 952 | 3.3316E-07, 2.8488E-07, 2.3461E-07, 1.7397E-07, 1.4684E-07, // F13100 | |||
| 953 | 1.0953E-07, 8.5396E-08, 6.9261E-08, 5.4001E-08, 4.5430E-08, // F13110 | |||
| 954 | 3.2791E-08, 2.5995E-08, 2.0225E-08, 1.5710E-08, 1.3027E-08, // F13120 | |||
| 955 | 1.0229E-08, 8.5277E-09, 6.5249E-09, 5.0117E-09, 3.9906E-09, // F13130 | |||
| 956 | 3.2332E-09, 2.7847E-09, 2.4570E-09, 2.3359E-09, 2.0599E-09, // F13140 | |||
| 957 | 1.8436E-09, 1.6559E-09, 1.4910E-09, 1.2794E-09, 9.8229E-10, // F13150 | |||
| 958 | 8.0054E-10, 6.0769E-10, 4.5646E-10, 3.3111E-10, 2.4428E-10, // F13160 | |||
| 959 | 1.8007E-10, 1.3291E-10, 9.7974E-11, 7.8271E-11, 6.3833E-11, // F13170 | |||
| 960 | 5.4425E-11, 4.6471E-11, 4.0209E-11, 3.5227E-11, 3.1212E-11, // F13180 | |||
| 961 | 2.8840E-11, 2.7762E-11, 2.7935E-11, 3.2012E-11, 3.9525E-11, // F13190 | |||
| 962 | 5.0303E-11, 6.8027E-11, 9.3954E-11, 1.2986E-10, 1.8478E-10, // F13210 | |||
| 963 | 2.5331E-10, 3.4827E-10, 4.6968E-10, 6.2380E-10, 7.9106E-10, // F13220 | |||
| 964 | 1.0026E-09, 1.2102E-09, 1.4146E-09, 1.6154E-09, 1.7510E-09, // F13230 | |||
| 965 | 1.8575E-09, 1.8742E-09, 1.8700E-09, 1.8582E-09, 1.9657E-09, // F13240 | |||
| 966 | 2.1204E-09, 2.0381E-09, 2.0122E-09, 2.0436E-09, 2.1213E-09, // F13250 | |||
| 967 | 2.0742E-09, 1.9870E-09, 2.0465E-09, 2.1556E-09, 2.2222E-09, // F13260 | |||
| 968 | 2.1977E-09, 2.1047E-09, 1.9334E-09, 1.7357E-09, 1.5754E-09, // F13270 | |||
| 969 | 1.4398E-09, 1.4018E-09, 1.5459E-09, 1.7576E-09, 2.1645E-09, // F13280 | |||
| 970 | 2.9480E-09, 4.4439E-09, 5.8341E-09, 8.0757E-09, 1.1658E-08, // F13290 | |||
| 971 | 1.6793E-08, 2.2694E-08, 2.9468E-08, 3.9278E-08, 5.2145E-08, // F13300 | |||
| 972 | 6.4378E-08, 7.7947E-08, 8.5321E-08, 9.7848E-08, 1.0999E-07, // F13320 | |||
| 973 | 1.1489E-07, 1.2082E-07, 1.2822E-07, 1.4053E-07, 1.5238E-07, // F13330 | |||
| 974 | 1.5454E-07, 1.5018E-07, 1.4048E-07, 1.2359E-07, 1.0858E-07, // F13340 | |||
| 975 | 9.3486E-08, 8.1638E-08, 7.7690E-08, 8.4625E-08, 1.0114E-07, // F13350 | |||
| 976 | 1.1430E-07, 1.2263E-07, 1.3084E-07, 1.3380E-07, 1.3573E-07, // F13360 | |||
| 977 | 1.3441E-07, 1.2962E-07, 1.2638E-07, 1.1934E-07, 1.1371E-07, // F13370 | |||
| 978 | 1.0871E-07, 9.8843E-08, 9.1877E-08, 9.1050E-08, 9.3213E-08, // F13380 | |||
| 979 | 9.2929E-08, 1.0155E-07, 1.1263E-07, 1.2370E-07, 1.3636E-07, // F13390 | |||
| 980 | 1.5400E-07, 1.7656E-07, 2.1329E-07, 2.3045E-07, 2.5811E-07, // F13400 | |||
| 981 | 2.9261E-07, 3.4259E-07, 4.0770E-07, 4.8771E-07, 5.8081E-07, // F13410 | |||
| 982 | 7.2895E-07, 8.7482E-07, 1.0795E-06, 1.3384E-06, 1.7208E-06, // F13430 | |||
| 983 | 2.0677E-06, 2.5294E-06, 3.1123E-06, 3.7900E-06, 4.7752E-06, // F13440 | |||
| 984 | 5.6891E-06, 6.6261E-06, 7.6246E-06, 8.7730E-06, 9.6672E-06, // F13450 | |||
| 985 | 1.0980E-05, 1.1287E-05, 1.1670E-05, 1.1635E-05, 1.1768E-05, // F13460 | |||
| 986 | 1.2039E-05, 1.2253E-05, 1.3294E-05, 1.4005E-05, 1.3854E-05, // F13470 | |||
| 987 | 1.3420E-05, 1.3003E-05, 1.2645E-05, 1.1715E-05, 1.1258E-05, // F13480 | |||
| 988 | 1.1516E-05, 1.2494E-05, 1.3655E-05, 1.4931E-05, 1.4649E-05, // F13490 | |||
| 989 | 1.3857E-05, 1.3120E-05, 1.1791E-05, 1.0637E-05, 8.2760E-06, // F13500 | |||
| 990 | 6.5821E-06, 5.1959E-06, 4.0158E-06, 3.0131E-06, 2.0462E-06, // F13510 | |||
| 991 | 1.4853E-06, 1.0365E-06, 7.3938E-07, 4.9752E-07, 3.4148E-07, // F13520 | |||
| 992 | 2.4992E-07, 1.8363E-07, 1.4591E-07, 1.1380E-07, 9.0588E-08, // F13540 | |||
| 993 | 7.3697E-08, 6.0252E-08, 5.1868E-08, 4.2660E-08, 3.6163E-08, // F13550 | |||
| 994 | 3.2512E-08, 2.9258E-08, 2.4238E-08, 2.1209E-08, 1.6362E-08, // F13560 | |||
| 995 | 1.3871E-08, 1.2355E-08, 9.6940E-09, 7.7735E-09, 6.2278E-09, // F13570 | |||
| 996 | 5.2282E-09, 4.3799E-09, 3.5545E-09, 2.7527E-09, 2.0950E-09, // F13580 | |||
| 997 | 1.6344E-09, 1.2689E-09, 1.0403E-09, 8.4880E-10, 6.3461E-10, // F13590 | |||
| 998 | 4.7657E-10, 3.5220E-10, 2.7879E-10, 2.3021E-10, 1.6167E-10, // F13600 | |||
| 999 | 1.1732E-10, 8.9206E-11, 7.0596E-11, 5.8310E-11, 4.4084E-11, // F13610 | |||
| 1000 | 3.1534E-11, 2.5068E-11, 2.2088E-11, 2.2579E-11, 2.2637E-11, // F13620 | |||
| 1001 | 2.5705E-11, 3.2415E-11, 4.6116E-11, 6.5346E-11, 9.4842E-11, // F13630 | |||
| 1002 | 1.2809E-10, 1.8211E-10, 2.4052E-10, 3.0270E-10, 3.5531E-10, // F13650 | |||
| 1003 | 4.2402E-10, 4.6730E-10, 4.7942E-10, 4.6813E-10, 4.5997E-10, // F13660 | |||
| 1004 | 4.5788E-10, 4.0311E-10, 3.7367E-10, 3.3149E-10, 2.9281E-10, // F13670 | |||
| 1005 | 2.5231E-10, 2.1152E-10, 1.9799E-10, 1.8636E-10, 1.9085E-10, // F13680 | |||
| 1006 | 2.0786E-10, 2.2464E-10, 2.3785E-10, 2.5684E-10, 2.7499E-10, // F13690 | |||
| 1007 | 2.6962E-10, 2.6378E-10, 2.6297E-10, 2.6903E-10, 2.7035E-10, // F13700 | |||
| 1008 | 2.5394E-10, 2.5655E-10, 2.7184E-10, 2.9013E-10, 3.0585E-10, // F13710 | |||
| 1009 | 3.0791E-10, 3.1667E-10, 3.4343E-10, 3.7365E-10, 4.0269E-10, // F13720 | |||
| 1010 | 4.7260E-10, 5.6584E-10, 6.9791E-10, 8.6569E-10, 1.0393E-09, // F13730 | |||
| 1011 | 1.2067E-09, 1.5047E-09, 1.8583E-09, 2.2357E-09, 2.6498E-09, // F13740 | |||
| 1012 | 3.2483E-09, 3.9927E-09, 4.6618E-09, 5.5555E-09, 6.6609E-09, // F13760 | |||
| 1013 | 8.2139E-09, 1.0285E-08, 1.3919E-08, 1.8786E-08, 2.5150E-08, // F13770 | |||
| 1014 | 3.3130E-08, 4.5442E-08, 6.3370E-08, 9.0628E-08, 1.2118E-07, // F13780 | |||
| 1015 | 1.5927E-07, 2.1358E-07, 2.7825E-07, 3.7671E-07, 4.4894E-07, // F13790 | |||
| 1016 | 5.4442E-07, 6.2240E-07, 7.3004E-07, 8.3384E-07, 8.7933E-07, // F13800 | |||
| 1017 | 8.8080E-07, 8.6939E-07, 8.6541E-07, 8.2055E-07, 7.7278E-07, // F13810 | |||
| 1018 | 7.5989E-07, 8.6909E-07, 9.7945E-07, 1.0394E-06, 1.0646E-06, // F13820 | |||
| 1019 | 1.1509E-06, 1.2017E-06, 1.1915E-06, 1.1259E-06, 1.1549E-06, // F13830 | |||
| 1020 | 1.1938E-06, 1.2356E-06, 1.2404E-06, 1.1716E-06, 1.1149E-06, // F13840 | |||
| 1021 | 1.0073E-06, 8.9845E-07, 7.6639E-07, 6.1517E-07, 5.0887E-07, // F13850 | |||
| 1022 | 4.1269E-07, 3.2474E-07, 2.5698E-07, 1.8893E-07, 1.4009E-07, // F13870 | |||
| 1023 | 1.0340E-07, 7.7724E-08, 5.7302E-08, 4.2178E-08, 2.9603E-08, // F13880 | |||
| 1024 | 2.1945E-08, 1.6301E-08, 1.2806E-08, 1.0048E-08, 7.8970E-09, // F13890 | |||
| 1025 | 6.1133E-09, 4.9054E-09, 4.1985E-09, 3.6944E-09, 3.2586E-09, // F13900 | |||
| 1026 | 2.7362E-09, 2.3647E-09, 2.1249E-09, 1.8172E-09, 1.6224E-09, // F13910 | |||
| 1027 | 1.5158E-09, 1.2361E-09, 1.0682E-09, 9.2312E-10, 7.9220E-10, // F13920 | |||
| 1028 | 6.8174E-10, 5.6147E-10, 4.8268E-10, 4.1534E-10, 3.3106E-10, // F13930 | |||
| 1029 | 2.8275E-10, 2.4584E-10, 2.0742E-10, 1.7840E-10, 1.4664E-10, // F13940 | |||
| 1030 | 1.2390E-10, 1.0497E-10, 8.5038E-11, 6.7008E-11, 5.6355E-11, // F13950 | |||
| 1031 | 4.3323E-11, 3.6914E-11, 3.2262E-11, 3.0749E-11, 3.0318E-11, // F13960 | |||
| 1032 | 2.9447E-11, 2.9918E-11, 3.0668E-11, 3.1315E-11, 3.0329E-11, // F13980 | |||
| 1033 | 2.8259E-11, 2.6065E-11, 2.3578E-11, 2.0469E-11, 1.6908E-11, // F13990 | |||
| 1034 | 1.4912E-11, 1.1867E-11, 9.9730E-12, 8.1014E-12, 6.7528E-12, // F14000 | |||
| 1035 | 6.3133E-12, 5.8599E-12, 6.0145E-12, 6.5105E-12, 7.0537E-12, // F14010 | |||
| 1036 | 7.4973E-12, 7.8519E-12, 8.5039E-12, 9.1995E-12, 1.0694E-11, // F14020 | |||
| 1037 | 1.1659E-11, 1.2685E-11, 1.3087E-11, 1.3222E-11, 1.2634E-11, // F14030 | |||
| 1038 | 1.1077E-11, 9.6259E-12, 8.3202E-12, 7.4857E-12, 6.8069E-12, // F14040 | |||
| 1039 | 6.7496E-12, 7.3116E-12, 8.0171E-12, 8.6394E-12, 9.2659E-12, // F14050 | |||
| 1040 | 1.0048E-11, 1.0941E-11, 1.2226E-11, 1.3058E-11, 1.5193E-11, // F14060 | |||
| 1041 | 1.8923E-11, 2.3334E-11, 2.8787E-11, 3.6693E-11, 4.8295E-11, // F14070 | |||
| 1042 | 6.4260E-11, 8.8269E-11, 1.1865E-10, 1.5961E-10, 2.0605E-10, // F14090 | |||
| 1043 | 2.7349E-10, 3.7193E-10, 4.8216E-10, 6.1966E-10, 7.7150E-10, // F14100 | |||
| 1044 | 1.0195E-09, 1.2859E-09, 1.6535E-09, 2.0316E-09, 2.3913E-09, // F14110 | |||
| 1045 | 3.0114E-09, 3.7495E-09, 4.6504E-09, 5.9145E-09, 7.6840E-09, // F14120 | |||
| 1046 | 1.0304E-08, 1.3010E-08, 1.6441E-08, 2.1475E-08, 2.5892E-08, // F14130 | |||
| 1047 | 2.9788E-08, 3.3820E-08, 4.0007E-08, 4.4888E-08, 4.5765E-08, // F14140 | |||
| 1048 | 4.6131E-08, 4.6239E-08, 4.4849E-08, 4.0729E-08, 3.6856E-08, // F14150 | |||
| 1049 | 3.6164E-08, 3.7606E-08, 4.1457E-08, 4.3750E-08, 5.1150E-08, // F14160 | |||
| 1050 | 5.6054E-08, 6.1586E-08, 6.4521E-08, 6.6494E-08, 6.9024E-08, // F14170 | |||
| 1051 | 6.8893E-08, 7.0901E-08, 6.9760E-08, 7.1485E-08, 7.0740E-08, // F14180 | |||
| 1052 | 7.3764E-08, 7.6618E-08, 8.4182E-08, 9.3838E-08, 1.0761E-07, // F14200 | |||
| 1053 | 1.2851E-07, 1.4748E-07, 1.8407E-07, 2.2109E-07, 2.6392E-07, // F14210 | |||
| 1054 | 2.9887E-07, 3.4493E-07, 4.0336E-07, 4.3551E-07, 4.9231E-07, // F14220 | |||
| 1055 | 5.0728E-07, 5.3781E-07, 5.3285E-07, 5.4496E-07, 5.5707E-07, // F14230 | |||
| 1056 | 5.6944E-07, 6.1123E-07, 6.4317E-07, 6.4581E-07, 6.1999E-07, // F14240 | |||
| 1057 | 6.0191E-07, 5.7762E-07, 5.7241E-07, 5.7013E-07, 6.0160E-07, // F14250 | |||
| 1058 | 6.6905E-07, 7.4095E-07, 8.2121E-07, 8.0947E-07, 7.6145E-07, // F14260 | |||
| 1059 | 7.2193E-07, 6.3722E-07, 5.4316E-07, 4.2186E-07, 3.2528E-07, // F14270 | |||
| 1060 | 2.5207E-07, 1.8213E-07, 1.2658E-07, 8.6746E-08, 6.0216E-08, // F14280 | |||
| 1061 | 4.1122E-08, 2.8899E-08, 2.1740E-08, 1.7990E-08, 1.5593E-08, // F14290 | |||
| 1062 | 1.3970E-08, 1.2238E-08, 1.0539E-08, 9.2386E-09, 7.8481E-09, // F14310 | |||
| 1063 | 6.8704E-09, 5.7615E-09, 5.0434E-09, 4.6886E-09, 4.3770E-09, // F14320 | |||
| 1064 | 3.9768E-09, 3.5202E-09, 3.1854E-09, 2.9009E-09, 2.5763E-09, // F14330 | |||
| 1065 | 2.2135E-09, 1.9455E-09, 1.6248E-09, 1.3368E-09, 1.0842E-09, // F14340 | |||
| 1066 | 8.4254E-10, 6.7414E-10, 5.4667E-10, 4.5005E-10, 3.4932E-10, // F14350 | |||
| 1067 | 2.6745E-10, 2.2053E-10, 1.8162E-10, 1.4935E-10, 1.1618E-10, // F14360 | |||
| 1068 | 9.1888E-11, 8.0672E-11, 6.8746E-11, 6.2668E-11, 5.5715E-11, // F14370 | |||
| 1069 | 4.5074E-11, 3.7669E-11, 3.2082E-11, 2.8085E-11, 2.4838E-11, // F14380 | |||
| 1070 | 1.9791E-11, 1.6964E-11, 1.3887E-11, 1.1179E-11, 9.7499E-12, // F14390 | |||
| 1071 | 7.8255E-12, 6.3698E-12, 5.3265E-12, 4.6588E-12, 4.4498E-12, // F14400 | |||
| 1072 | 3.9984E-12, 3.7513E-12, 3.7176E-12, 3.9148E-12, 4.2702E-12, // F14420 | |||
| 1073 | 5.0090E-12, 6.5801E-12, 8.7787E-12, 1.2718E-11, 1.8375E-11, // F14430 | |||
| 1074 | 2.5304E-11, 3.5403E-11, 4.8842E-11, 6.4840E-11, 8.0911E-11, // F14440 | |||
| 1075 | 1.0136E-10, 1.2311E-10, 1.4203E-10, 1.5869E-10, 1.8093E-10, // F14450 | |||
| 1076 | 2.1370E-10, 2.5228E-10, 2.8816E-10, 3.4556E-10, 3.9860E-10, // F14460 | |||
| 1077 | 4.4350E-10, 4.7760E-10, 5.2357E-10, 6.0827E-10, 6.3635E-10, // F14470 | |||
| 1078 | 6.5886E-10, 6.8753E-10, 7.2349E-10, 7.2789E-10, 6.8232E-10, // F14480 | |||
| 1079 | 6.6081E-10, 6.4232E-10, 6.3485E-10, 6.4311E-10, 7.2235E-10, // F14490 | |||
| 1080 | 7.7263E-10, 8.1668E-10, 9.0324E-10, 9.7643E-10, 1.0535E-09, // F14500 | |||
| 1081 | 1.0195E-09, 1.0194E-09, 1.0156E-09, 9.6792E-10, 9.2725E-10, // F14510 | |||
| 1082 | 8.7347E-10, 8.4484E-10, 8.2647E-10, 8.4363E-10, 9.1261E-10, // F14530 | |||
| 1083 | 1.0051E-09, 1.1511E-09, 1.4037E-09, 1.8066E-09, 2.4483E-09, // F14540 | |||
| 1084 | 3.2739E-09, 4.3194E-09, 5.6902E-09, 7.7924E-09, 9.7376E-09, // F14550 | |||
| 1085 | 1.2055E-08, 1.4303E-08, 1.6956E-08, 1.9542E-08, 2.2233E-08, // F14560 | |||
| 1086 | 2.5186E-08, 2.7777E-08, 2.8943E-08, 2.8873E-08, 2.9417E-08, // F14570 | |||
| 1087 | 2.7954E-08, 2.7524E-08, 2.7040E-08, 3.1254E-08, 3.6843E-08, // F14580 | |||
| 1088 | 3.7797E-08, 3.8713E-08, 4.0135E-08, 4.2824E-08, 4.3004E-08, // F14590 | |||
| 1089 | 4.0279E-08, 4.2781E-08, 4.5220E-08, 4.8948E-08, 5.0172E-08, // F14600 | |||
| 1090 | 4.8499E-08, 4.7182E-08, 4.2204E-08, 3.7701E-08, 3.0972E-08, // F14610 | |||
| 1091 | 2.4654E-08, 1.9543E-08, 1.4609E-08, 1.1171E-08, 8.3367E-09, // F14620 | |||
| 1092 | 6.3791E-09, 5.0790E-09, 4.0655E-09, 3.3658E-09, 2.7882E-09, // F14640 | |||
| 1093 | 2.4749E-09, 2.2287E-09, 2.0217E-09, 1.8191E-09, 1.5897E-09, // F14650 | |||
| 1094 | 1.4191E-09, 1.2448E-09, 1.0884E-09, 9.3585E-10, 7.9429E-10, // F14660 | |||
| 1095 | 7.3214E-10, 6.5008E-10, 5.7549E-10, 5.4300E-10, 4.7251E-10, // F14670 | |||
| 1096 | 4.3451E-10, 3.8446E-10, 3.5589E-10, 3.4432E-10, 2.8209E-10, // F14680 | |||
| 1097 | 2.4620E-10, 2.1278E-10, 1.8406E-10, 1.6314E-10, 1.3261E-10, // F14690 | |||
| 1098 | 1.1696E-10, 9.6865E-11, 7.6814E-11, 6.6411E-11, 5.0903E-11, // F14700 | |||
| 1099 | 4.0827E-11, 3.0476E-11, 2.3230E-11, 1.7707E-11, 1.3548E-11, // F14710 | |||
| 1100 | 1.0719E-11, 9.3026E-12, 8.7967E-12, 8.3136E-12, 7.3918E-12, // F14720 | |||
| 1101 | 6.5293E-12, 5.9243E-12, 5.3595E-12, 3.5266E-12, 2.2571E-12, // F14730 | |||
| 1102 | 1.6150E-12, 1.1413E-12, 8.4998E-13, 7.0803E-13, 5.1747E-13, // F14750 | |||
| 1103 | 4.0694E-13, 3.6528E-13, 3.3670E-13, 3.1341E-13, 2.9390E-13, // F14760 | |||
| 1104 | 2.8680E-13, 3.1283E-13, 3.7294E-13, 5.0194E-13, 6.7919E-13, // F14770 | |||
| 1105 | 1.0455E-12, 1.5230E-12, 2.3932E-12, 3.4231E-12, 5.0515E-12, // F14780 | |||
| 1106 | 7.3193E-12, 9.9406E-12, 1.2193E-11, 1.4742E-11, 1.9269E-11, // F14790 | |||
| 1107 | 2.1816E-11, 2.2750E-11, 2.2902E-11, 2.3888E-11, 2.4902E-11, // F14800 | |||
| 1108 | 2.2160E-11, 2.0381E-11, 1.9903E-11, 2.0086E-11, 1.9304E-11, // F14810 | |||
| 1109 | 2.0023E-11, 2.2244E-11, 2.5450E-11, 3.1228E-11, 3.4560E-11, // F14820 | |||
| 1110 | 3.6923E-11, 3.7486E-11, 3.8124E-11, 3.8317E-11, 3.4737E-11, // F14830 | |||
| 1111 | 3.3037E-11, 3.1724E-11, 2.9840E-11, 2.8301E-11, 2.5857E-11, // F14840 | |||
| 1112 | 2.3708E-11, 1.9452E-11, 1.6232E-11, 1.5174E-11, 1.4206E-11, // F14860 | |||
| 1113 | 1.4408E-11, 1.5483E-11, 1.8642E-11, 2.3664E-11, 3.0181E-11, // F14870 | |||
| 1114 | 4.0160E-11, 5.2287E-11, 7.2754E-11, 1.0511E-10, 1.4531E-10, // F14880 | |||
| 1115 | 2.0998E-10, 2.6883E-10, 3.3082E-10, 4.2638E-10, 5.3132E-10, // F14890 | |||
| 1116 | 6.3617E-10, 7.1413E-10, 8.5953E-10, 9.9715E-10, 1.0796E-09, // F14900 | |||
| 1117 | 1.0978E-09, 1.1052E-09, 1.1095E-09, 1.0641E-09, 9.7881E-10, // F14910 | |||
| 1118 | 9.6590E-10, 1.0332E-09, 1.1974E-09, 1.3612E-09, 1.5829E-09, // F14920 | |||
| 1119 | 1.8655E-09, 2.1465E-09, 2.4779E-09, 2.7370E-09, 2.9915E-09, // F14930 | |||
| 1120 | 3.3037E-09, 3.6347E-09, 3.9587E-09, 4.4701E-09, 5.0122E-09, // F14940 | |||
| 1121 | 5.8044E-09, 6.1916E-09, 6.9613E-09, 7.7863E-09, 8.2820E-09, // F14950 | |||
| 1122 | 9.4359E-09, 9.7387E-09, 1.0656E-08, 1.0746E-08, 1.1210E-08, // F14970 | |||
| 1123 | 1.1905E-08, 1.2194E-08, 1.3145E-08, 1.3738E-08, 1.3634E-08, // F14980 | |||
| 1124 | 1.3011E-08, 1.2511E-08, 1.1805E-08, 1.2159E-08, 1.2390E-08, // F14990 | |||
| 1125 | 1.3625E-08, 1.5678E-08, 1.7886E-08, 1.9933E-08, 1.9865E-08, // F15000 | |||
| 1126 | 1.9000E-08, 1.7812E-08, 1.5521E-08, 1.2593E-08, 9.5635E-09, // F15010 | |||
| 1127 | 7.2987E-09, 5.2489E-09, 3.5673E-09, 2.4206E-09, 1.6977E-09, // F15020 | |||
| 1128 | 1.2456E-09, 9.3744E-10, 7.8379E-10, 6.9960E-10, 6.6451E-10, // F15030 | |||
| 1129 | 6.8521E-10, 7.4234E-10, 8.6658E-10, 9.4972E-10, 1.0791E-09, // F15040 | |||
| 1130 | 1.2359E-09, 1.3363E-09, 1.5025E-09, 1.5368E-09, 1.6152E-09, // F15050 | |||
| 1131 | 1.6184E-09, 1.6557E-09, 1.7035E-09, 1.6916E-09, 1.7237E-09, // F15060 | |||
| 1132 | 1.7175E-09, 1.6475E-09, 1.5335E-09, 1.4272E-09, 1.3282E-09, // F15080 | |||
| 1133 | 1.3459E-09, 1.4028E-09, 1.5192E-09, 1.7068E-09, 1.9085E-09, // F15090 | |||
| 1134 | 2.1318E-09, 2.1020E-09, 1.9942E-09, 1.8654E-09, 1.6391E-09, // F15100 | |||
| 1135 | 1.3552E-09, 1.0186E-09, 7.8540E-10, 5.7022E-10, 3.9247E-10, // F15110 | |||
| 1136 | 2.5441E-10, 1.6699E-10, 1.1132E-10, 6.8989E-11, 4.5255E-11, // F15120 | |||
| 1137 | 3.1106E-11, 2.3161E-11, 1.7618E-11, 1.4380E-11, 1.1601E-11, // F15130 | |||
| 1138 | 9.7148E-12, 8.4519E-12, 6.5392E-12, 5.4113E-12, 4.7624E-12, // F15140 | |||
| 1139 | 4.0617E-12, 3.6173E-12, 2.8608E-12, 2.2724E-12, 1.7436E-12, // F15150 | |||
| 1140 | 1.3424E-12, 1.0358E-12, 7.3064E-13, 5.4500E-13, 4.0551E-13, // F15160 | |||
| 1141 | 2.8642E-13, 2.1831E-13, 1.6860E-13, 1.2086E-13, 1.0150E-13, // F15170 | |||
| 1142 | 9.3550E-14, 8.4105E-14, 7.3051E-14, 6.9796E-14, 7.9949E-14, // F15190 | |||
| 1143 | 1.0742E-13, 1.5639E-13, 2.1308E-13, 3.1226E-13, 4.6853E-13, // F15200 | |||
| 1144 | 6.6917E-13, 1.0088E-12, 1.4824E-12, 2.2763E-12, 3.3917E-12, // F15210 | |||
| 1145 | 4.4585E-12, 6.3187E-12, 8.4189E-12, 1.1302E-11, 1.3431E-11, // F15220 | |||
| 1146 | 1.5679E-11, 1.9044E-11, 2.2463E-11, 2.3605E-11, 2.3619E-11, // F15230 | |||
| 1147 | 2.3505E-11, 2.3805E-11, 2.2549E-11, 1.9304E-11, 1.8382E-11, // F15240 | |||
| 1148 | 1.7795E-11, 1.8439E-11, 1.9146E-11, 2.1966E-11, 2.6109E-11, // F15250 | |||
| 1149 | 3.1883E-11, 3.7872E-11, 4.3966E-11, 4.8789E-11, 5.3264E-11, // F15260 | |||
| 1150 | 5.9705E-11, 6.3744E-11, 7.0163E-11, 7.9114E-11, 8.8287E-11, // F15270 | |||
| 1151 | 9.9726E-11, 1.1498E-10, 1.3700E-10, 1.6145E-10, 1.9913E-10, // F15280 | |||
| 1152 | 2.2778E-10, 2.6216E-10, 2.9770E-10, 3.3405E-10, 3.7821E-10, // F15300 | |||
| 1153 | 3.9552E-10, 4.1322E-10, 4.0293E-10, 4.0259E-10, 3.8853E-10, // F15310 | |||
| 1154 | 3.7842E-10, 3.8551E-10, 4.4618E-10, 5.0527E-10, 5.0695E-10, // F15320 | |||
| 1155 | 5.1216E-10, 5.1930E-10, 5.5794E-10, 5.3320E-10, 5.2008E-10, // F15330 | |||
| 1156 | 5.6888E-10, 6.1883E-10, 6.9006E-10, 6.9505E-10, 6.6768E-10, // F15340 | |||
| 1157 | 6.3290E-10, 5.6753E-10, 5.0327E-10, 3.9830E-10, 3.1147E-10, // F15350 | |||
| 1158 | 2.4416E-10, 1.8860E-10, 1.3908E-10, 9.9156E-11, 7.3779E-11, // F15360 | |||
| 1159 | 5.6048E-11, 4.2457E-11, 3.4505E-11, 2.9881E-11, 2.7865E-11, // F15370 | |||
| 1160 | 2.8471E-11, 3.1065E-11, 3.4204E-11, 3.9140E-11, 4.3606E-11, // F15380 | |||
| 1161 | 4.9075E-11, 5.3069E-11, 5.5236E-11, 5.5309E-11, 5.3832E-11, // F15390 | |||
| 1162 | 5.3183E-11, 5.1783E-11, 5.2042E-11, 5.4422E-11, 5.5656E-11, // F15410 | |||
| 1163 | 5.4409E-11, 5.2659E-11, 5.1696E-11, 5.1726E-11, 4.9003E-11, // F15420 | |||
| 1164 | 4.9050E-11, 5.1700E-11, 5.6818E-11, 6.3129E-11, 6.6542E-11, // F15430 | |||
| 1165 | 6.4367E-11, 5.9908E-11, 5.4470E-11, 4.7903E-11, 3.9669E-11, // F15440 | |||
| 1166 | 2.9651E-11, 2.2286E-11, 1.6742E-11, 1.1827E-11, 7.7739E-12, // F15450 | |||
| 1167 | 4.8805E-12, 3.1747E-12, 2.0057E-12, 1.2550E-12, 8.7434E-13, // F15460 | |||
| 1168 | 6.2755E-13, 4.9752E-13, 4.0047E-13, 3.5602E-13, 3.0930E-13, // F15470 | |||
| 1169 | 2.4903E-13, 1.9316E-13, 1.4995E-13, 1.2059E-13, 8.7242E-14, // F15480 | |||
| 1170 | 6.4511E-14, 5.3300E-14, 4.3741E-14, 3.4916E-14, 2.6560E-14, // F15490 | |||
| 1171 | 1.6923E-14, 1.1816E-14, 6.7071E-15, 3.6474E-15, 2.0686E-15, // F15500 | |||
| 1172 | 1.1925E-15, 6.8948E-16, 3.9661E-16, 2.2576E-16, 1.2669E-16, // F15520 | |||
| 1173 | 6.9908E-17, 3.7896E-17, 2.0280E-17, 1.1016E-17, 6.7816E-18, // F15530 | |||
| 1174 | 6.0958E-18, 8.9913E-18, 1.7201E-17, 3.4964E-17, 7.0722E-17, // F15540 | |||
| 1175 | 1.4020E-16, 2.7167E-16, 5.1478E-16, 9.5500E-16, 1.7376E-15, // F15550 | |||
| 1176 | 3.1074E-15, 5.4789E-15, 9.5640E-15, 1.6635E-14, 2.9145E-14, // F15560 | |||
| 1177 | 5.2179E-14, 8.8554E-14, 1.4764E-13, 2.3331E-13, 3.5996E-13, // F15570 | |||
| 1178 | 5.2132E-13, 6.3519E-13, 7.3174E-13, 8.3752E-13, 9.8916E-13, // F15580 | |||
| 1179 | 1.1515E-12, 1.4034E-12, 1.6594E-12, 2.1021E-12, 2.7416E-12, // F15590 | |||
| 1180 | 3.4135E-12, 4.5517E-12, 5.5832E-12, 7.2303E-12, 9.9484E-12, // F15600 | |||
| 1181 | 1.2724E-11, 1.6478E-11, 2.0588E-11, 2.5543E-11, 3.3625E-11, // F15610 | |||
| 1182 | 4.1788E-11, 5.0081E-11, 6.0144E-11, 6.9599E-11, 8.4408E-11, // F15630 | |||
| 1183 | 9.7143E-11, 1.0805E-10, 1.1713E-10, 1.2711E-10, 1.3727E-10, // F15640 | |||
| 1184 | 1.4539E-10, 1.6049E-10, 1.7680E-10, 2.0557E-10, 2.4967E-10, // F15650 | |||
| 1185 | 3.0096E-10, 3.5816E-10, 4.0851E-10, 4.6111E-10, 5.2197E-10, // F15660 | |||
| 1186 | 5.5043E-10, 6.0324E-10, 6.4983E-10, 6.7498E-10, 7.0545E-10, // F15670 | |||
| 1187 | 7.0680E-10, 7.5218E-10, 7.5723E-10, 7.7840E-10, 8.0081E-10, // F15680 | |||
| 1188 | 8.0223E-10, 7.7271E-10, 7.1676E-10, 6.7819E-10, 6.4753E-10, // F15690 | |||
| 1189 | 6.5844E-10, 7.0163E-10, 7.7503E-10, 8.8152E-10, 9.9022E-10, // F15700 | |||
| 1190 | 1.0229E-09, 9.9296E-10, 8.9911E-10, 7.7813E-10, 6.3785E-10, // F15710 | |||
| 1191 | 4.7491E-10, 3.5280E-10, 2.4349E-10, 1.6502E-10, 1.1622E-10, // F15720 | |||
| 1192 | 8.6715E-11, 6.7360E-11, 5.3910E-11, 4.5554E-11, 4.1300E-11, // F15740 | |||
| 1193 | 3.9728E-11, 3.9000E-11, 3.9803E-11, 4.1514E-11, 4.3374E-11, // F15750 | |||
| 1194 | 4.6831E-11, 4.8921E-11, 5.1995E-11, 5.7242E-11, 6.2759E-11, // F15760 | |||
| 1195 | 7.0801E-11, 7.4555E-11, 7.9754E-11, 8.7616E-11, 9.1171E-11, // F15770 | |||
| 1196 | 1.0349E-10, 1.1047E-10, 1.2024E-10, 1.2990E-10, 1.3725E-10, // F15780 | |||
| 1197 | 1.5005E-10, 1.5268E-10, 1.5535E-10, 1.5623E-10, 1.5009E-10, // F15790 | |||
| 1198 | 1.4034E-10, 1.3002E-10, 1.2225E-10, 1.1989E-10, 1.2411E-10, // F15800 | |||
| 1199 | 1.3612E-10, 1.5225E-10, 1.7202E-10, 1.9471E-10, 1.9931E-10, // F15810 | |||
| 1200 | 1.9079E-10, 1.7478E-10, 1.5259E-10, 1.2625E-10, 9.3332E-11, // F15820 | |||
| 1201 | 6.8796E-11, 4.6466E-11, 2.9723E-11, 1.8508E-11, 1.2106E-11, // F15830 | |||
| 1202 | 8.0142E-12, 5.4066E-12, 3.9329E-12, 3.1665E-12, 2.7420E-12, // F15850 | |||
| 1203 | 2.3996E-12, 2.3804E-12, 2.3242E-12, 2.4476E-12, 2.5331E-12, // F15860 | |||
| 1204 | 2.3595E-12, 2.2575E-12, 2.1298E-12, 2.0088E-12, 1.8263E-12, // F15870 | |||
| 1205 | 1.6114E-12, 1.4422E-12, 1.2946E-12, 1.0837E-12, 9.1282E-13, // F15880 | |||
| 1206 | 7.2359E-13, 5.3307E-13, 3.8837E-13, 2.6678E-13, 1.6769E-13, // F15890 | |||
| 1207 | 1.0826E-13, 7.2364E-14, 4.5201E-14, 3.0808E-14, 2.2377E-14, // F15900 | |||
| 1208 | 1.7040E-14, 9.2181E-15, 5.2934E-15, 3.5774E-15, 3.1431E-15, // F15910 | |||
| 1209 | 3.7647E-15, 5.6428E-15, 9.5139E-15, 1.7322E-14, 2.8829E-14, // F15920 | |||
| 1210 | 4.7708E-14, 6.9789E-14, 9.7267E-14, 1.4662E-13, 1.9429E-13, // F15930 | |||
| 1211 | 2.5998E-13, 3.6636E-13, 4.7960E-13, 6.5129E-13, 7.7638E-13, // F15940 | |||
| 1212 | 9.3774E-13, 1.1467E-12, 1.3547E-12, 1.5686E-12, 1.6893E-12, // F15960 | |||
| 1213 | 1.9069E-12, 2.1352E-12, 2.3071E-12, 2.4759E-12, 2.8247E-12, // F15970 | |||
| 1214 | 3.4365E-12, 4.3181E-12, 5.6107E-12, 7.0017E-12, 8.6408E-12, // F15980 | |||
| 1215 | 1.0974E-11, 1.3742E-11, 1.6337E-11, 2.0157E-11, 2.3441E-11, // F15990 | |||
| 1216 | 2.6733E-11, 3.0247E-11, 3.3737E-11, 3.8618E-11, 4.1343E-11, // F16000 | |||
| 1217 | 4.3870E-11, 4.4685E-11, 4.4881E-11, 4.5526E-11, 4.3628E-11, // F16010 | |||
| 1218 | 4.4268E-11, 4.6865E-11, 5.3426E-11, 5.4020E-11, 5.3218E-11, // F16020 | |||
| 1219 | 5.4587E-11, 5.6360E-11, 5.7740E-11, 5.6426E-11, 6.0399E-11, // F16030 | |||
| 1220 | 6.6981E-11, 7.4319E-11, 7.7977E-11, 7.5539E-11, 7.1610E-11, // F16040 | |||
| 1221 | 6.4606E-11, 5.5498E-11, 4.3944E-11, 3.3769E-11, 2.5771E-11, // F16050 | |||
| 1222 | 1.9162E-11, 1.3698E-11, 1.0173E-11, 7.8925E-12, 6.1938E-12, // F16070 | |||
| 1223 | 4.7962E-12, 4.0811E-12, 3.3912E-12, 2.8625E-12, 2.4504E-12, // F16080 | |||
| 1224 | 2.2188E-12, 2.2139E-12, 2.2499E-12, 2.2766E-12, 2.3985E-12, // F16090 | |||
| 1225 | 2.5459E-12, 2.9295E-12, 3.4196E-12, 3.6155E-12, 4.0733E-12, // F16100 | |||
| 1226 | 4.4610E-12, 4.9372E-12, 5.4372E-12, 5.7304E-12, 6.1640E-12, // F16110 | |||
| 1227 | 6.1278E-12, 6.2940E-12, 6.4947E-12, 6.8174E-12, 7.5190E-12, // F16120 | |||
| 1228 | 8.2608E-12, 8.4971E-12, 8.3484E-12, 8.1888E-12, 7.8552E-12, // F16130 | |||
| 1229 | 7.8468E-12, 7.5943E-12, 7.9096E-12, 8.6869E-12, 9.1303E-12, // F16140 | |||
| 1230 | 9.2547E-12, 8.9322E-12, 8.2177E-12, 7.3408E-12, 5.7956E-12, // F16150 | |||
| 1231 | 4.4470E-12, 3.5881E-12, 2.6748E-12, 1.7074E-12, 9.6700E-13, // F16160 | |||
| 1232 | 5.2645E-13, 2.9943E-13, 1.7316E-13, 1.0039E-13, 5.7859E-14, // F16180 | |||
| 1233 | 3.2968E-14, 1.8499E-14, 1.0192E-14, 5.5015E-15, 2.9040E-15, // F16190 | |||
| 1234 | 1.4968E-15, 7.5244E-16, 3.6852E-16, 1.7568E-16, 8.1464E-17, // F16200 | |||
| 1235 | 3.6717E-17, 1.6076E-17, 6.8341E-18, 2.8195E-18, 1.1286E-18, // F16210 | |||
| 1236 | .0000E+00, .0000E+00, .0000E+00, .0000E+00, .0000E+00, // F16220 | |||
| 1237 | .0000E+00, .0000E+00, .0000E+00, .0000E+00, 1.4070E-18, // F16230 | |||
| 1238 | 3.0405E-18, 6.4059E-18, 1.3169E-17, 2.6443E-17, 5.1917E-17, // F16240 | |||
| 1239 | 9.9785E-17, 1.8802E-16, 3.4788E-16, 6.3328E-16, 1.1370E-15, // F16250 | |||
| 1240 | 2.0198E-15, 3.5665E-15, 6.3053E-15, 1.1309E-14, 2.1206E-14, // F16260 | |||
| 1241 | 3.2858E-14, 5.5165E-14, 8.6231E-14, 1.2776E-13, 1.7780E-13, // F16270 | |||
| 1242 | 2.5266E-13, 3.6254E-13, 5.1398E-13, 6.8289E-13, 8.7481E-13, // F16290 | |||
| 1243 | 1.1914E-12, 1.6086E-12, 2.0469E-12, 2.5761E-12, 3.4964E-12, // F16300 | |||
| 1244 | 4.4980E-12, 5.5356E-12, 6.7963E-12, 8.5720E-12, 1.0700E-11, // F16310 | |||
| 1245 | 1.2983E-11, 1.6270E-11, 1.9609E-11, 2.2668E-11, 2.5963E-11, // F16320 | |||
| 1246 | 3.0918E-11, 3.4930E-11, 3.9330E-11, 4.4208E-11, 4.6431E-11, // F16330 | |||
| 1247 | 5.1141E-11, 5.4108E-11, 5.8077E-11, 6.5050E-11, 7.2126E-11, // F16340 | |||
| 1248 | 8.1064E-11, 8.1973E-11, 8.1694E-11, 8.3081E-11, 8.0240E-11, // F16350 | |||
| 1249 | 7.9225E-11, 7.6256E-11, 7.8468E-11, 8.0041E-11, 8.1585E-11, // F16360 | |||
| 1250 | 8.3485E-11, 8.3774E-11, 8.5870E-11, 8.6104E-11, 8.8516E-11, // F16370 | |||
| 1251 | 9.0814E-11, 9.2522E-11, 8.8913E-11, 7.8381E-11, 6.8568E-11, // F16380 | |||
| 1252 | 5.6797E-11, 4.4163E-11, 3.2369E-11, 2.3259E-11, 1.6835E-11, // F16400 | |||
| 1253 | 1.1733E-11, 8.5273E-12, 6.3805E-12, 4.8983E-12, 3.8831E-12, // F16410 | |||
| 1254 | 3.2610E-12, 2.8577E-12, 2.5210E-12, 2.2913E-12, 2.0341E-12, // F16420 | |||
| 1255 | 1.8167E-12, 1.6395E-12, 1.4890E-12, 1.3516E-12, 1.2542E-12, // F16430 | |||
| 1256 | 1.2910E-12, 1.3471E-12, 1.4689E-12, 1.5889E-12, 1.6989E-12, // F16440 | |||
| 1257 | 1.8843E-12, 2.0902E-12, 2.3874E-12, 2.7294E-12, 3.3353E-12, // F16450 | |||
| 1258 | 4.0186E-12, 4.5868E-12, 5.2212E-12, 5.8856E-12, 6.5991E-12, // F16460 | |||
| 1259 | 7.2505E-12, 7.6637E-12, 8.5113E-12, 9.4832E-12, 9.9678E-12, // F16470 | |||
| 1260 | 1.0723E-11, 1.0749E-11, 1.1380E-11, 1.1774E-11, 1.1743E-11, // F16480 | |||
| 1261 | 1.2493E-11, 1.2559E-11, 1.2332E-11, 1.1782E-11, 1.1086E-11, // F16490 | |||
| 1262 | 1.0945E-11, 1.1178E-11, 1.2083E-11, 1.3037E-11, 1.4730E-11, // F16510 | |||
| 1263 | 1.6450E-11, 1.7403E-11, 1.7004E-11, 1.5117E-11, 1.3339E-11, // F16520 | |||
| 1264 | 1.0844E-11, 8.0915E-12, 5.6615E-12, 3.7196E-12, 2.5194E-12, // F16530 | |||
| 1265 | 1.6569E-12, 1.1201E-12, 8.2335E-13, 6.0270E-13, 4.8205E-13, // F16540 | |||
| 1266 | 4.1313E-13, 3.6243E-13, 3.2575E-13, 2.7730E-13, 2.5292E-13, // F16550 | |||
| 1267 | 2.3062E-13, 2.1126E-13, 2.1556E-13, 2.1213E-13, 2.2103E-13, // F16560 | |||
| 1268 | 2.1927E-13, 2.0794E-13, 1.9533E-13, 1.6592E-13, 1.4521E-13, // F16570 | |||
| 1269 | 1.1393E-13, 8.3772E-14, 6.2077E-14, 4.3337E-14, 2.7165E-14, // F16580 | |||
| 1270 | 1.6821E-14, 9.5407E-15, 5.3093E-15, 3.0320E-15, 1.7429E-15, // F16590 | |||
| 1271 | 9.9828E-16, 5.6622E-16, 3.1672E-16, 1.7419E-16, 9.3985E-17, // F16600 | |||
| 1272 | 4.9656E-17, 2.5652E-17, 1.2942E-17, 6.3695E-18, 3.0554E-18, // F16620 | |||
| 1273 | 1.4273E-18, -0. , -0. , -0. , -0. , // F16630 | |||
| 1274 | -0. , 0. , 0. , 0. , 0. , // F16640 | |||
| 1275 | 0. , 0. , 0. , 0. , 0. , // F16650 | |||
| 1276 | 0. , 0. , 0. , 0. , 0. , // F16660 | |||
| 1277 | 0. , 0. , 0. , 0. , 0. , // F16670 | |||
| 1278 | 0. , 0. , 0. , 0. , 0. , // F16680 | |||
| 1279 | 0. , 0. , 0. , 0. , 0. , // F16690 | |||
| 1280 | 0. , 0. , 0. , 0. , 0. , // F16700 | |||
| 1281 | 0. , 0. , 0. , 0. , 0. , // F16710 | |||
| 1282 | 0. , 0. , 0. , 0. , 0. , // F16730 | |||
| 1283 | 0. , 0. , 0. , 0. , 0. , // F16740 | |||
| 1284 | 0. , 0. , 0. , 0. , 0. , // F16750 | |||
| 1285 | 0. , 0. , 0. , 0. , 0. , // F16760 | |||
| 1286 | 0. , 0. , 0. , 0. , 0. , // F16770 | |||
| 1287 | 0. , 0. , 0. , 0. , 0. , // F16780 | |||
| 1288 | 0. , 0. , 0. , 0. , 0. , // F16790 | |||
| 1289 | 0. , 0. , 0. , 0. , 0. , // F16800 | |||
| 1290 | 0. , 0. , 0. , 0. , 0. , // F16810 | |||
| 1291 | 0. , 0. , 0. , 0. , 0. , // F16820 | |||
| 1292 | 0. , 0. , 0. , 0. , 0. , // F16840 | |||
| 1293 | 0. , 0. , 0. , 0. , 0. , // F16850 | |||
| 1294 | 0. , 0. , 0. , 0. , 0. , // F16860 | |||
| 1295 | 0. , 0. , 0. , 0. , 0. , // F16870 | |||
| 1296 | 0. , 0. , 0. , 0. , 0. , // F16880 | |||
| 1297 | 0. , 0. , 0. , 0. , 0. , // F16890 | |||
| 1298 | 0. , 0. , 0. , 0. , 0. , // F16900 | |||
| 1299 | 0. , 0. , 0. , 0. , 0. , // F16910 | |||
| 1300 | 0. , 0. , 0. , 0. , 0. , // F16920 | |||
| 1301 | 0. , 0. , 0. , 0. , 0. , // F16930 | |||
| 1302 | 0. , 0. , 0. , 0. , 0. , // F16950 | |||
| 1303 | 0. , 0. , 0. , 0. , 0. , // F16960 | |||
| 1304 | 0. , 0. , 0. , 0. , 0. , // F16970 | |||
| 1305 | 0. , 0. , 0. , 0. , 0. , // F16980 | |||
| 1306 | 0. , 0. , 0. , 0. , 0. , // F16990 | |||
| 1307 | 0. , 0. , 0. , 0. , 0. , // F17000 | |||
| 1308 | 0. , 0. , 0. , 0. , 0. , // F17010 | |||
| 1309 | 0. , 0. , 0. , 0. , 0. , // F17020 | |||
| 1310 | 0. , 0. , 0. , 0. , 0. , // F17030 | |||
| 1311 | 0. , 0. , 0. , 0. , 0. , // F17040 | |||
| 1312 | 0.}; | |||
| 1313 | ||||
| 1314 | ||||
| 1315 | ||||
| 1316 | ||||
| 1317 | ||||
| 1318 | ||||
| 1319 | // H2O self continuum parameters at T=260 K for the CKD versions 0 to 2.4.2 | |||
| 1320 | // date of last update: 06/28/82 | |||
| 1321 | // units of (CM**3/MOL)*1.E-20 | |||
| 1322 | const Numeric SL260_ckd_0_v1 = -20.0; | |||
| 1323 | const Numeric SL260_ckd_0_v2 = 20000.0; | |||
| 1324 | const Numeric SL260_ckd_0_dv = 10.0; | |||
| 1325 | const int SL260_ckd_0_npt = 2003; | |||
| 1326 | const double SL260_ckd_0[SL260_ckd_0_npt+addF77fields] = { | |||
| 1327 | 0.0000e-00, 1.7750e-01, 1.7045e-01, | |||
| 1328 | 1.6457e-01, 1.7045e-01, 1.7750e-01, 2.0036e-01, 2.1347e-01, // f07700 | |||
| 1329 | 2.2454e-01, 2.3428e-01, 2.3399e-01, 2.3022e-01, 2.0724e-01, // f07710 | |||
| 1330 | 1.9712e-01, 1.8317e-01, 1.6724e-01, 1.4780e-01, 1.2757e-01, // f07720 | |||
| 1331 | 1.1626e-01, 1.0098e-01, 8.9033e-02, 7.9770e-02, 6.7416e-02, // f07730 | |||
| 1332 | 5.9588e-02, 5.1117e-02, 4.6218e-02, 4.2179e-02, 3.4372e-02, // f07740 | |||
| 1333 | 2.9863e-02, 2.5252e-02, 2.2075e-02, 1.9209e-02, 1.5816e-02, // f07750 | |||
| 1334 | 1.3932e-02, 1.1943e-02, 1.0079e-02, 8.7667e-03, 7.4094e-03, // f07760 | |||
| 1335 | 6.4967e-03, 5.5711e-03, 4.8444e-03, 4.2552e-03, 3.6953e-03, // f07770 | |||
| 1336 | 3.2824e-03, 2.9124e-03, 2.6102e-03, 2.3370e-03, 2.1100e-03, // f07780 | |||
| 1337 | 1.9008e-03, 1.7145e-03, 1.5573e-03, 1.4206e-03, 1.2931e-03, // f07790 | |||
| 1338 | 1.1803e-03, 1.0774e-03, 9.8616e-04, 9.0496e-04, 8.3071e-04, // f07810 | |||
| 1339 | 7.6319e-04, 7.0149e-04, 6.4637e-04, 5.9566e-04, 5.4987e-04, // f07820 | |||
| 1340 | 5.0768e-04, 4.6880e-04, 4.3317e-04, 4.0037e-04, 3.7064e-04, // f07830 | |||
| 1341 | 3.4325e-04, 3.1809e-04, 2.9501e-04, 2.7382e-04, 2.5430e-04, // f07840 | |||
| 1342 | 2.3630e-04, 2.1977e-04, 2.0452e-04, 1.9042e-04, 1.7740e-04, // f07850 | |||
| 1343 | 1.6544e-04, 1.5442e-04, 1.4425e-04, 1.3486e-04, 1.2618e-04, // f07860 | |||
| 1344 | 1.1817e-04, 1.1076e-04, 1.0391e-04, 9.7563e-05, 9.1696e-05, // f07870 | |||
| 1345 | 8.6272e-05, 8.1253e-05, 7.6607e-05, 7.2302e-05, 6.8311e-05, // f07880 | |||
| 1346 | 6.4613e-05, 6.1183e-05, 5.8001e-05, 5.5048e-05, 5.2307e-05, // f07890 | |||
| 1347 | 4.9761e-05, 4.7395e-05, 4.5197e-05, 4.3155e-05, 4.1256e-05, // f07900 | |||
| 1348 | 3.9491e-05, 3.7849e-05, 3.6324e-05, 3.4908e-05, 3.3594e-05, // f07920 | |||
| 1349 | 3.2374e-05, 3.1244e-05, 3.0201e-05, 2.9240e-05, 2.8356e-05, // f07930 | |||
| 1350 | 2.7547e-05, 2.6814e-05, 2.6147e-05, 2.5551e-05, 2.5029e-05, // f07940 | |||
| 1351 | 2.4582e-05, 2.4203e-05, 2.3891e-05, 2.3663e-05, 2.3531e-05, // f07950 | |||
| 1352 | 2.3483e-05, 2.3516e-05, 2.3694e-05, 2.4032e-05, 2.4579e-05, // f07960 | |||
| 1353 | 2.5234e-05, 2.6032e-05, 2.7119e-05, 2.8631e-05, 3.0848e-05, // f07970 | |||
| 1354 | 3.3262e-05, 3.6635e-05, 4.0732e-05, 4.5923e-05, 5.3373e-05, // f07980 | |||
| 1355 | 6.1875e-05, 7.2031e-05, 8.5980e-05, 9.8642e-05, 1.1469e-04, // f07990 | |||
| 1356 | 1.3327e-04, 1.5390e-04, 1.7513e-04, 2.0665e-04, 2.3609e-04, // f08000 | |||
| 1357 | 2.6220e-04, 2.8677e-04, 3.2590e-04, 3.8624e-04, 4.1570e-04, // f08010 | |||
| 1358 | 4.5207e-04, 4.9336e-04, 5.4500e-04, 5.8258e-04, 5.8086e-04, // f08030 | |||
| 1359 | 5.6977e-04, 5.3085e-04, 4.8020e-04, 4.3915e-04, 4.0343e-04, // f08040 | |||
| 1360 | 3.7853e-04, 3.7025e-04, 3.9637e-04, 4.4675e-04, 4.7072e-04, // f08050 | |||
| 1361 | 4.9022e-04, 5.2076e-04, 5.3676e-04, 5.2755e-04, 4.8244e-04, // f08060 | |||
| 1362 | 4.5473e-04, 4.3952e-04, 3.9614e-04, 3.4086e-04, 2.9733e-04, // f08070 | |||
| 1363 | 2.6367e-04, 2.3767e-04, 2.0427e-04, 1.7595e-04, 1.5493e-04, // f08080 | |||
| 1364 | 1.3851e-04, 1.1874e-04, 1.0735e-04, 9.0490e-05, 8.1149e-05, // f08090 | |||
| 1365 | 7.4788e-05, 6.5438e-05, 5.8248e-05, 4.8076e-05, 4.3488e-05, // f08100 | |||
| 1366 | 3.7856e-05, 3.3034e-05, 2.9592e-05, 2.6088e-05, 2.3497e-05, // f08110 | |||
| 1367 | 2.0279e-05, 1.7526e-05, 1.5714e-05, 1.3553e-05, 1.2145e-05, // f08120 | |||
| 1368 | 1.0802e-05, 9.7681e-06, 8.8196e-06, 7.8291e-06, 7.1335e-06, // f08140 | |||
| 1369 | 6.4234e-06, 5.8391e-06, 5.3532e-06, 4.9079e-06, 4.5378e-06, // f08150 | |||
| 1370 | 4.1716e-06, 3.8649e-06, 3.5893e-06, 3.3406e-06, 3.1199e-06, // f08160 | |||
| 1371 | 2.9172e-06, 2.7348e-06, 2.5644e-06, 2.4086e-06, 2.2664e-06, // f08170 | |||
| 1372 | 2.1359e-06, 2.0159e-06, 1.9051e-06, 1.8031e-06, 1.7074e-06, // f08180 | |||
| 1373 | 1.6185e-06, 1.5356e-06, 1.4584e-06, 1.3861e-06, 1.3179e-06, // f08190 | |||
| 1374 | 1.2545e-06, 1.1951e-06, 1.1395e-06, 1.0873e-06, 1.0384e-06, // f08200 | |||
| 1375 | 9.9250e-07, 9.4935e-07, 9.0873e-07, 8.7050e-07, 8.3446e-07, // f08210 | |||
| 1376 | 8.0046e-07, 7.6834e-07, 7.3800e-07, 7.0931e-07, 6.8217e-07, // f08220 | |||
| 1377 | 6.5648e-07, 6.3214e-07, 6.0909e-07, 5.8725e-07, 5.6655e-07, // f08230 | |||
| 1378 | 5.4693e-07, 5.2835e-07, 5.1077e-07, 4.9416e-07, 4.7853e-07, // f08250 | |||
| 1379 | 4.6381e-07, 4.5007e-07, 4.3728e-07, 4.2550e-07, 4.1450e-07, // f08260 | |||
| 1380 | 4.0459e-07, 3.9532e-07, 3.8662e-07, 3.7855e-07, 3.7041e-07, // f08270 | |||
| 1381 | 3.6254e-07, 3.5420e-07, 3.4617e-07, 3.3838e-07, 3.3212e-07, // f08280 | |||
| 1382 | 3.2655e-07, 3.1865e-07, 3.1203e-07, 3.0670e-07, 3.0252e-07, // f08290 | |||
| 1383 | 2.9749e-07, 2.9184e-07, 2.8795e-07, 2.8501e-07, 2.8202e-07, // f08300 | |||
| 1384 | 2.7856e-07, 2.7509e-07, 2.7152e-07, 2.6844e-07, 2.6642e-07, // f08310 | |||
| 1385 | 2.6548e-07, 2.6617e-07, 2.6916e-07, 2.7372e-07, 2.8094e-07, // f08320 | |||
| 1386 | 2.9236e-07, 3.1035e-07, 3.2854e-07, 3.5481e-07, 3.9377e-07, // f08330 | |||
| 1387 | 4.4692e-07, 5.0761e-07, 5.7715e-07, 6.7725e-07, 8.0668e-07, // f08340 | |||
| 1388 | 9.3716e-07, 1.0797e-06, 1.1689e-06, 1.3217e-06, 1.4814e-06, // f08360 | |||
| 1389 | 1.5627e-06, 1.6519e-06, 1.7601e-06, 1.9060e-06, 2.0474e-06, // f08370 | |||
| 1390 | 2.0716e-06, 2.0433e-06, 1.9752e-06, 1.8466e-06, 1.7526e-06, // f08380 | |||
| 1391 | 1.6657e-06, 1.5870e-06, 1.5633e-06, 1.6520e-06, 1.8471e-06, // f08390 | |||
| 1392 | 1.9953e-06, 2.0975e-06, 2.2016e-06, 2.2542e-06, 2.3081e-06, // f08400 | |||
| 1393 | 2.3209e-06, 2.2998e-06, 2.3056e-06, 2.2757e-06, 2.2685e-06, // f08410 | |||
| 1394 | 2.2779e-06, 2.2348e-06, 2.2445e-06, 2.3174e-06, 2.4284e-06, // f08420 | |||
| 1395 | 2.5290e-06, 2.7340e-06, 2.9720e-06, 3.2332e-06, 3.5392e-06, // f08430 | |||
| 1396 | 3.9013e-06, 4.3334e-06, 4.9088e-06, 5.3428e-06, 5.9142e-06, // f08440 | |||
| 1397 | 6.6106e-06, 7.4709e-06, 8.5019e-06, 9.6835e-06, 1.0984e-05, // f08450 | |||
| 1398 | 1.2831e-05, 1.4664e-05, 1.7080e-05, 2.0103e-05, 2.4148e-05, // f08470 | |||
| 1399 | 2.7948e-05, 3.2855e-05, 3.9046e-05, 4.6429e-05, 5.6633e-05, // f08480 | |||
| 1400 | 6.6305e-05, 7.6048e-05, 8.7398e-05, 1.0034e-04, 1.1169e-04, // f08490 | |||
| 1401 | 1.2813e-04, 1.3354e-04, 1.3952e-04, 1.4204e-04, 1.4615e-04, // f08500 | |||
| 1402 | 1.5144e-04, 1.5475e-04, 1.6561e-04, 1.7135e-04, 1.6831e-04, // f08510 | |||
| 1403 | 1.6429e-04, 1.6353e-04, 1.6543e-04, 1.5944e-04, 1.5404e-04, // f08520 | |||
| 1404 | 1.5458e-04, 1.6287e-04, 1.7277e-04, 1.8387e-04, 1.7622e-04, // f08530 | |||
| 1405 | 1.6360e-04, 1.5273e-04, 1.3667e-04, 1.2364e-04, 9.7576e-05, // f08540 | |||
| 1406 | 7.9140e-05, 6.4241e-05, 5.1826e-05, 4.1415e-05, 3.1347e-05, // f08550 | |||
| 1407 | 2.5125e-05, 2.0027e-05, 1.6362e-05, 1.3364e-05, 1.1117e-05, // f08560 | |||
| 1408 | 9.4992e-06, 8.1581e-06, 7.1512e-06, 6.2692e-06, 5.5285e-06, // f08580 | |||
| 1409 | 4.9000e-06, 4.3447e-06, 3.8906e-06, 3.4679e-06, 3.1089e-06, // f08590 | |||
| 1410 | 2.8115e-06, 2.5496e-06, 2.2982e-06, 2.0861e-06, 1.8763e-06, // f08600 | |||
| 1411 | 1.7035e-06, 1.5548e-06, 1.4107e-06, 1.2839e-06, 1.1706e-06, // f08610 | |||
| 1412 | 1.0709e-06, 9.8099e-07, 8.9901e-07, 8.2394e-07, 7.5567e-07, // f08620 | |||
| 1413 | 6.9434e-07, 6.3867e-07, 5.8845e-07, 5.4263e-07, 5.0033e-07, // f08630 | |||
| 1414 | 4.6181e-07, 4.2652e-07, 3.9437e-07, 3.6497e-07, 3.3781e-07, // f08640 | |||
| 1415 | 3.1292e-07, 2.9011e-07, 2.6915e-07, 2.4989e-07, 2.3215e-07, // f08650 | |||
| 1416 | 2.1582e-07, 2.0081e-07, 1.8700e-07, 1.7432e-07, 1.6264e-07, // f08660 | |||
| 1417 | 1.5191e-07, 1.4207e-07, 1.3306e-07, 1.2484e-07, 1.1737e-07, // f08670 | |||
| 1418 | 1.1056e-07, 1.0451e-07, 9.9060e-08, 9.4135e-08, 8.9608e-08, // f08690 | |||
| 1419 | 8.5697e-08, 8.1945e-08, 7.8308e-08, 7.4808e-08, 7.1686e-08, // f08700 | |||
| 1420 | 6.8923e-08, 6.5869e-08, 6.3308e-08, 6.0840e-08, 5.8676e-08, // f08710 | |||
| 1421 | 5.6744e-08, 5.5016e-08, 5.3813e-08, 5.2792e-08, 5.2097e-08, // f08720 | |||
| 1422 | 5.1737e-08, 5.1603e-08, 5.1656e-08, 5.1989e-08, 5.2467e-08, // f08730 | |||
| 1423 | 5.2918e-08, 5.3589e-08, 5.4560e-08, 5.5869e-08, 5.7403e-08, // f08740 | |||
| 1424 | 5.8968e-08, 6.0973e-08, 6.3432e-08, 6.6245e-08, 6.9353e-08, // f08750 | |||
| 1425 | 7.2686e-08, 7.6541e-08, 8.0991e-08, 8.5950e-08, 9.1429e-08, // f08760 | |||
| 1426 | 9.7851e-08, 1.0516e-07, 1.1349e-07, 1.2295e-07, 1.3335e-07, // f08770 | |||
| 1427 | 1.4488e-07, 1.5864e-07, 1.7412e-07, 1.9140e-07, 2.1078e-07, // f08780 | |||
| 1428 | 2.3369e-07, 2.5996e-07, 2.8848e-07, 3.2169e-07, 3.5991e-07, // f08800 | |||
| 1429 | 4.0566e-07, 4.5969e-07, 5.3094e-07, 6.1458e-07, 7.1155e-07, // f08810 | |||
| 1430 | 8.3045e-07, 9.9021e-07, 1.2042e-06, 1.4914e-06, 1.8145e-06, // f08820 | |||
| 1431 | 2.2210e-06, 2.7831e-06, 3.4533e-06, 4.4446e-06, 5.1989e-06, // f08830 | |||
| 1432 | 6.2289e-06, 7.1167e-06, 8.3949e-06, 9.6417e-06, 1.0313e-05, // f08840 | |||
| 1433 | 1.0485e-05, 1.0641e-05, 1.0898e-05, 1.0763e-05, 1.0506e-05, // f08850 | |||
| 1434 | 1.0497e-05, 1.1696e-05, 1.2654e-05, 1.3029e-05, 1.3175e-05, // f08860 | |||
| 1435 | 1.4264e-05, 1.4985e-05, 1.4999e-05, 1.4317e-05, 1.4616e-05, // f08870 | |||
| 1436 | 1.4963e-05, 1.5208e-05, 1.4942e-05, 1.3879e-05, 1.3087e-05, // f08880 | |||
| 1437 | 1.1727e-05, 1.0515e-05, 9.0073e-06, 7.3133e-06, 6.1181e-06, // f08890 | |||
| 1438 | 5.0623e-06, 4.1105e-06, 3.3915e-06, 2.6711e-06, 2.1464e-06, // f08910 | |||
| 1439 | 1.7335e-06, 1.4302e-06, 1.1847e-06, 9.9434e-07, 8.2689e-07, // f08920 | |||
| 1440 | 7.0589e-07, 6.0750e-07, 5.3176e-07, 4.6936e-07, 4.1541e-07, // f08930 | |||
| 1441 | 3.6625e-07, 3.2509e-07, 2.9156e-07, 2.6308e-07, 2.3819e-07, // f08940 | |||
| 1442 | 2.1421e-07, 1.9366e-07, 1.7626e-07, 1.5982e-07, 1.4567e-07, // f08950 | |||
| 1443 | 1.3354e-07, 1.2097e-07, 1.1029e-07, 1.0063e-07, 9.2003e-08, // f08960 | |||
| 1444 | 8.4245e-08, 7.7004e-08, 7.0636e-08, 6.4923e-08, 5.9503e-08, // f08970 | |||
| 1445 | 5.4742e-08, 5.0450e-08, 4.6470e-08, 4.2881e-08, 3.9550e-08, // f08980 | |||
| 1446 | 3.6541e-08, 3.3803e-08, 3.1279e-08, 2.8955e-08, 2.6858e-08, // f08990 | |||
| 1447 | 2.4905e-08, 2.3146e-08, 2.1539e-08, 2.0079e-08, 1.8746e-08, // f09000 | |||
| 1448 | 1.7517e-08, 1.6396e-08, 1.5369e-08, 1.4426e-08, 1.3543e-08, // f09020 | |||
| 1449 | 1.2724e-08, 1.1965e-08, 1.1267e-08, 1.0617e-08, 1.0010e-08, // f09030 | |||
| 1450 | 9.4662e-09, 8.9553e-09, 8.4988e-09, 8.0807e-09, 7.7043e-09, // f09040 | |||
| 1451 | 7.3721e-09, 7.0707e-09, 6.8047e-09, 6.5702e-09, 6.3634e-09, // f09050 | |||
| 1452 | 6.1817e-09, 6.0239e-09, 5.8922e-09, 5.7824e-09, 5.7019e-09, // f09060 | |||
| 1453 | 5.6368e-09, 5.5940e-09, 5.5669e-09, 5.5583e-09, 5.5653e-09, // f09070 | |||
| 1454 | 5.5837e-09, 5.6243e-09, 5.6883e-09, 5.7800e-09, 5.8964e-09, // f09080 | |||
| 1455 | 6.0429e-09, 6.2211e-09, 6.4282e-09, 6.6634e-09, 6.9306e-09, // f09090 | |||
| 1456 | 7.2336e-09, 7.5739e-09, 7.9562e-09, 8.3779e-09, 8.8575e-09, // f09100 | |||
| 1457 | 9.3992e-09, 1.0004e-08, 1.0684e-08, 1.1450e-08, 1.2320e-08, // f09110 | |||
| 1458 | 1.3311e-08, 1.4455e-08, 1.5758e-08, 1.7254e-08, 1.8927e-08, // f09130 | |||
| 1459 | 2.0930e-08, 2.3348e-08, 2.6074e-08, 2.9221e-08, 3.2770e-08, // f09140 | |||
| 1460 | 3.7485e-08, 4.2569e-08, 4.8981e-08, 5.5606e-08, 6.2393e-08, // f09150 | |||
| 1461 | 7.1901e-08, 8.2921e-08, 9.5513e-08, 1.1111e-07, 1.3143e-07, // f09160 | |||
| 1462 | 1.5971e-07, 1.8927e-07, 2.2643e-07, 2.7860e-07, 3.2591e-07, // f09170 | |||
| 1463 | 3.7024e-07, 4.2059e-07, 4.9432e-07, 5.5543e-07, 5.7498e-07, // f09180 | |||
| 1464 | 5.9210e-07, 6.1005e-07, 6.1577e-07, 5.9193e-07, 5.6602e-07, // f09190 | |||
| 1465 | 5.7403e-07, 6.0050e-07, 6.4723e-07, 6.7073e-07, 7.5415e-07, // f09200 | |||
| 1466 | 8.0982e-07, 8.7658e-07, 9.1430e-07, 9.4459e-07, 9.8347e-07, // f09210 | |||
| 1467 | 9.8768e-07, 1.0153e-06, 1.0066e-06, 1.0353e-06, 1.0353e-06, // f09220 | |||
| 1468 | 1.0722e-06, 1.1138e-06, 1.1923e-06, 1.2947e-06, 1.4431e-06, // f09240 | |||
| 1469 | 1.6537e-06, 1.8662e-06, 2.2473e-06, 2.6464e-06, 3.1041e-06, // f09250 | |||
| 1470 | 3.4858e-06, 4.0167e-06, 4.6675e-06, 5.0983e-06, 5.7997e-06, // f09260 | |||
| 1471 | 6.0503e-06, 6.4687e-06, 6.5396e-06, 6.7986e-06, 7.0244e-06, // f09270 | |||
| 1472 | 7.2305e-06, 7.6732e-06, 7.9783e-06, 7.9846e-06, 7.7617e-06, // f09280 | |||
| 1473 | 7.7657e-06, 7.7411e-06, 7.8816e-06, 7.8136e-06, 8.0051e-06, // f09290 | |||
| 1474 | 8.5799e-06, 9.1659e-06, 9.8646e-06, 9.4920e-06, 8.7670e-06, // f09300 | |||
| 1475 | 8.2034e-06, 7.2297e-06, 6.2324e-06, 4.9315e-06, 3.9128e-06, // f09310 | |||
| 1476 | 3.1517e-06, 2.4469e-06, 1.8815e-06, 1.4627e-06, 1.1698e-06, // f09320 | |||
| 1477 | 9.4686e-07, 7.8486e-07, 6.6970e-07, 5.8811e-07, 5.2198e-07, // f09330 | |||
| 1478 | 4.6809e-07, 4.1671e-07, 3.7006e-07, 3.3066e-07, 2.9387e-07, // f09350 | |||
| 1479 | 2.6415e-07, 2.3409e-07, 2.0991e-07, 1.9132e-07, 1.7519e-07, // f09360 | |||
| 1480 | 1.5939e-07, 1.4368e-07, 1.3050e-07, 1.1883e-07, 1.0772e-07, // f09370 | |||
| 1481 | 9.6884e-08, 8.7888e-08, 7.8956e-08, 7.1024e-08, 6.3824e-08, // f09380 | |||
| 1482 | 5.7256e-08, 5.1769e-08, 4.7037e-08, 4.2901e-08, 3.8970e-08, // f09390 | |||
| 1483 | 3.5467e-08, 3.2502e-08, 2.9827e-08, 2.7389e-08, 2.5111e-08, // f09400 | |||
| 1484 | 2.3056e-08, 2.1267e-08, 1.9610e-08, 1.8133e-08, 1.6775e-08, // f09410 | |||
| 1485 | 1.5491e-08, 1.4329e-08, 1.3265e-08, 1.2300e-08, 1.1420e-08, // f09420 | |||
| 1486 | 1.0593e-08, 9.8475e-09, 9.1585e-09, 8.5256e-09, 7.9525e-09, // f09430 | |||
| 1487 | 7.4226e-09, 6.9379e-09, 6.4950e-09, 6.0911e-09, 5.7242e-09, // f09440 | |||
| 1488 | 5.3877e-09, 5.0821e-09, 4.8051e-09, 4.5554e-09, 4.3315e-09, // f09460 | |||
| 1489 | 4.1336e-09, 3.9632e-09, 3.8185e-09, 3.7080e-09, 3.6296e-09, // f09470 | |||
| 1490 | 3.5804e-09, 3.5776e-09, 3.6253e-09, 3.7115e-09, 3.8151e-09, // f09480 | |||
| 1491 | 3.9804e-09, 4.1742e-09, 4.3581e-09, 4.5306e-09, 4.7736e-09, // f09490 | |||
| 1492 | 5.1297e-09, 5.5291e-09, 5.9125e-09, 6.4956e-09, 7.0362e-09, // f09500 | |||
| 1493 | 7.5318e-09, 7.9947e-09, 8.6438e-09, 9.7227e-09, 1.0130e-08, // f09510 | |||
| 1494 | 1.0549e-08, 1.1064e-08, 1.1702e-08, 1.2043e-08, 1.1781e-08, // f09520 | |||
| 1495 | 1.1838e-08, 1.1917e-08, 1.2131e-08, 1.2476e-08, 1.3611e-08, // f09530 | |||
| 1496 | 1.4360e-08, 1.5057e-08, 1.6247e-08, 1.7284e-08, 1.8420e-08, // f09540 | |||
| 1497 | 1.8352e-08, 1.8722e-08, 1.9112e-08, 1.9092e-08, 1.9311e-08, // f09550 | |||
| 1498 | 1.9411e-08, 1.9884e-08, 2.0508e-08, 2.1510e-08, 2.3143e-08, // f09570 | |||
| 1499 | 2.5050e-08, 2.7596e-08, 3.1231e-08, 3.6260e-08, 4.3410e-08, // f09580 | |||
| 1500 | 5.2240e-08, 6.3236e-08, 7.7522e-08, 9.8688e-08, 1.1859e-07, // f09590 | |||
| 1501 | 1.4341e-07, 1.6798e-07, 1.9825e-07, 2.2898e-07, 2.6257e-07, // f09600 | |||
| 1502 | 2.9884e-07, 3.3247e-07, 3.4936e-07, 3.5583e-07, 3.7150e-07, // f09610 | |||
| 1503 | 3.6580e-07, 3.7124e-07, 3.7030e-07, 4.1536e-07, 4.6656e-07, // f09620 | |||
| 1504 | 4.6677e-07, 4.7507e-07, 4.9653e-07, 5.3795e-07, 5.4957e-07, // f09630 | |||
| 1505 | 5.2238e-07, 5.4690e-07, 5.6569e-07, 5.9844e-07, 5.9835e-07, // f09640 | |||
| 1506 | 5.6522e-07, 5.4123e-07, 4.7904e-07, 4.2851e-07, 3.5603e-07, // f09650 | |||
| 1507 | 2.8932e-07, 2.3655e-07, 1.8592e-07, 1.4943e-07, 1.1971e-07, // f09660 | |||
| 1508 | 9.8482e-08, 8.3675e-08, 7.1270e-08, 6.2496e-08, 5.4999e-08, // f09680 | |||
| 1509 | 4.9821e-08, 4.5387e-08, 4.1340e-08, 3.7453e-08, 3.3298e-08, // f09690 | |||
| 1510 | 3.0120e-08, 2.7032e-08, 2.4236e-08, 2.1500e-08, 1.8988e-08, // f09700 | |||
| 1511 | 1.7414e-08, 1.5706e-08, 1.4192e-08, 1.3204e-08, 1.1759e-08, // f09710 | |||
| 1512 | 1.0737e-08, 9.6309e-09, 8.8179e-09, 8.2619e-09, 7.2264e-09, // f09720 | |||
| 1513 | 6.4856e-09, 5.8037e-09, 5.2093e-09, 4.7205e-09, 4.1749e-09, // f09730 | |||
| 1514 | 3.7852e-09, 3.3915e-09, 3.0089e-09, 2.7335e-09, 2.4398e-09, // f09740 | |||
| 1515 | 2.2031e-09, 1.9786e-09, 1.7890e-09, 1.6266e-09, 1.4830e-09, // f09750 | |||
| 1516 | 1.3576e-09, 1.2518e-09, 1.1587e-09, 1.0726e-09, 9.9106e-10, // f09760 | |||
| 1517 | 9.1673e-10, 8.5084e-10, 7.9147e-10, 7.2882e-10, 6.7342e-10, // f09770 | |||
| 1518 | 6.2593e-10, 5.8294e-10, 5.4435e-10, 5.0997e-10, 4.7806e-10, // f09790 | |||
| 1519 | 4.4931e-10, 4.2357e-10, 4.0023e-10, 3.7909e-10, 3.5999e-10, // f09800 | |||
| 1520 | 3.4285e-10, 3.2776e-10, 3.1468e-10, 3.0377e-10, 2.9479e-10, // f09810 | |||
| 1521 | 2.8877e-10, 2.8512e-10, 2.8617e-10, 2.8976e-10, 3.0001e-10, // f09820 | |||
| 1522 | 3.1718e-10, 3.3898e-10, 3.5857e-10, 3.8358e-10, 4.3131e-10, // f09830 | |||
| 1523 | 4.5741e-10, 4.6948e-10, 4.7594e-10, 4.9529e-10, 5.1563e-10, // f09840 | |||
| 1524 | 4.9475e-10, 4.8369e-10, 4.8829e-10, 5.0047e-10, 5.0203e-10, // f09850 | |||
| 1525 | 5.1954e-10, 5.5352e-10, 5.9928e-10, 6.7148e-10, 7.1121e-10, // f09860 | |||
| 1526 | 7.4317e-10, 7.6039e-10, 7.8313e-10, 8.0684e-10, 7.8553e-10, // f09870 | |||
| 1527 | 7.8312e-10, 7.8537e-10, 7.8872e-10, 8.0185e-10, 8.1004e-10, // f09880 | |||
| 1528 | 8.2608e-10, 8.2525e-10, 8.3857e-10, 8.7920e-10, 9.2451e-10, // f09900 | |||
| 1529 | 9.8661e-10, 1.0629e-09, 1.1659e-09, 1.2922e-09, 1.4387e-09, // f09910 | |||
| 1530 | 1.6254e-09, 1.8425e-09, 2.1428e-09, 2.5477e-09, 3.0379e-09, // f09920 | |||
| 1531 | 3.7570e-09, 4.4354e-09, 5.1802e-09, 6.2769e-09, 7.4894e-09, // f09930 | |||
| 1532 | 8.7474e-09, 9.8037e-09, 1.1582e-08, 1.3293e-08, 1.4471e-08, // f09940 | |||
| 1533 | 1.5025e-08, 1.5580e-08, 1.6228e-08, 1.6413e-08, 1.6020e-08, // f09950 | |||
| 1534 | 1.6393e-08, 1.7545e-08, 1.9590e-08, 2.1449e-08, 2.3856e-08, // f09960 | |||
| 1535 | 2.7050e-08, 3.0214e-08, 3.3733e-08, 3.6487e-08, 3.9353e-08, // f09970 | |||
| 1536 | 4.2660e-08, 4.6385e-08, 4.9955e-08, 5.5313e-08, 6.0923e-08, // f09980 | |||
| 1537 | 6.8948e-08, 7.3649e-08, 8.2602e-08, 9.2212e-08, 9.9080e-08, // f09990 | |||
| 1538 | 1.1319e-07, 1.1790e-07, 1.2941e-07, 1.3199e-07, 1.3914e-07, // f10010 | |||
| 1539 | 1.4843e-07, 1.5300e-07, 1.6419e-07, 1.7095e-07, 1.6988e-07, // f10020 | |||
| 1540 | 1.6494e-07, 1.6327e-07, 1.6067e-07, 1.6909e-07, 1.7118e-07, // f10030 | |||
| 1541 | 1.8106e-07, 1.9857e-07, 2.1696e-07, 2.3385e-07, 2.2776e-07, // f10040 | |||
| 1542 | 2.1402e-07, 1.9882e-07, 1.7362e-07, 1.4308e-07, 1.1158e-07, // f10050 | |||
| 1543 | 8.8781e-08, 6.8689e-08, 5.2062e-08, 4.0427e-08, 3.2669e-08, // f10060 | |||
| 1544 | 2.7354e-08, 2.3200e-08, 2.0580e-08, 1.8676e-08, 1.7329e-08, // f10070 | |||
| 1545 | 1.6621e-08, 1.6433e-08, 1.6953e-08, 1.7134e-08, 1.7948e-08, // f10080 | |||
| 1546 | 1.9107e-08, 1.9875e-08, 2.1416e-08, 2.1556e-08, 2.2265e-08, // f10090 | |||
| 1547 | 2.2171e-08, 2.2534e-08, 2.3029e-08, 2.2828e-08, 2.3143e-08, // f10100 | |||
| 1548 | 2.2965e-08, 2.2223e-08, 2.1108e-08, 2.0265e-08, 1.9516e-08, // f10120 | |||
| 1549 | 1.9941e-08, 2.0312e-08, 2.1080e-08, 2.2611e-08, 2.4210e-08, // f10130 | |||
| 1550 | 2.6069e-08, 2.5097e-08, 2.3318e-08, 2.1543e-08, 1.8942e-08, // f10140 | |||
| 1551 | 1.5960e-08, 1.2386e-08, 9.9340e-09, 7.7502e-09, 5.9462e-09, // f10150 | |||
| 1552 | 4.5113e-09, 3.5523e-09, 2.8844e-09, 2.3394e-09, 1.9584e-09, // f10160 | |||
| 1553 | 1.6749e-09, 1.4624e-09, 1.2809e-09, 1.1359e-09, 1.0087e-09, // f10170 | |||
| 1554 | 9.0166e-10, 8.1079e-10, 7.2219e-10, 6.4922e-10, 5.8803e-10, // f10180 | |||
| 1555 | 5.3290e-10, 4.8590e-10, 4.4111e-10, 4.0184e-10, 3.6644e-10, // f10190 | |||
| 1556 | 3.3529e-10, 3.0789e-10, 2.8286e-10, 2.6089e-10, 2.4125e-10, // f10200 | |||
| 1557 | 2.2355e-10, 2.0783e-10, 1.9370e-10, 1.8088e-10, 1.6948e-10, // f10210 | |||
| 1558 | 1.5929e-10, 1.5013e-10, 1.4193e-10, 1.3470e-10, 1.2841e-10, // f10230 | |||
| 1559 | 1.2307e-10, 1.1865e-10, 1.1502e-10, 1.1243e-10, 1.1099e-10, // f10240 | |||
| 1560 | 1.1066e-10, 1.1216e-10, 1.1529e-10, 1.2171e-10, 1.3128e-10, // f10250 | |||
| 1561 | 1.4153e-10, 1.5962e-10, 1.8048e-10, 2.0936e-10, 2.3165e-10, // f10260 | |||
| 1562 | 2.5746e-10, 2.9600e-10, 3.3707e-10, 3.5267e-10, 3.5953e-10, // f10270 | |||
| 1563 | 3.6822e-10, 3.8363e-10, 3.8286e-10, 3.5883e-10, 3.6154e-10, // f10280 | |||
| 1564 | 3.6653e-10, 3.8507e-10, 4.0250e-10, 4.4435e-10, 4.9889e-10, // f10290 | |||
| 1565 | 5.6932e-10, 6.3599e-10, 7.0281e-10, 7.5777e-10, 8.1279e-10, // f10300 | |||
| 1566 | 8.8910e-10, 9.3400e-10, 1.0076e-09, 1.0945e-09, 1.1898e-09, // f10310 | |||
| 1567 | 1.3108e-09, 1.4725e-09, 1.7028e-09, 1.9619e-09, 2.3527e-09, // f10320 | |||
| 1568 | 2.6488e-09, 3.0327e-09, 3.4396e-09, 3.8797e-09, 4.4115e-09, // f10340 | |||
| 1569 | 4.6853e-09, 4.9553e-09, 4.9551e-09, 5.1062e-09, 5.0996e-09, // f10350 | |||
| 1570 | 5.1119e-09, 5.2283e-09, 5.8297e-09, 6.3439e-09, 6.2675e-09, // f10360 | |||
| 1571 | 6.3296e-09, 6.5173e-09, 7.1685e-09, 7.0528e-09, 6.8856e-09, // f10370 | |||
| 1572 | 7.3182e-09, 7.6990e-09, 8.3461e-09, 8.1946e-09, 7.7153e-09, // f10380 | |||
| 1573 | 7.2411e-09, 6.4511e-09, 5.7336e-09, 4.6105e-09, 3.6962e-09, // f10390 | |||
| 1574 | 2.9944e-09, 2.4317e-09, 1.9399e-09, 1.5331e-09, 1.2633e-09, // f10400 | |||
| 1575 | 1.0613e-09, 9.0136e-10, 7.9313e-10, 7.1543e-10, 6.6485e-10, // f10410 | |||
| 1576 | 6.4225e-10, 6.3980e-10, 6.4598e-10, 6.7428e-10, 7.0270e-10, // f10420 | |||
| 1577 | 7.4694e-10, 7.7946e-10, 7.9395e-10, 7.8716e-10, 7.6933e-10, // f10430 | |||
| 1578 | 7.6220e-10, 7.4825e-10, 7.4805e-10, 7.6511e-10, 7.6492e-10, // f10450 | |||
| 1579 | 7.4103e-10, 7.1979e-10, 7.1686e-10, 7.3403e-10, 7.1142e-10, // f10460 | |||
| 1580 | 7.0212e-10, 7.1548e-10, 7.5253e-10, 8.0444e-10, 8.2378e-10, // f10470 | |||
| 1581 | 7.8004e-10, 7.1712e-10, 6.4978e-10, 5.7573e-10, 4.8675e-10, // f10480 | |||
| 1582 | 3.7945e-10, 3.0118e-10, 2.4241e-10, 1.9100e-10, 1.4816e-10, // f10490 | |||
| 1583 | 1.1567e-10, 9.4183e-11, 7.7660e-11, 6.5270e-11, 5.6616e-11, // f10500 | |||
| 1584 | 4.9576e-11, 4.4137e-11, 3.9459e-11, 3.5759e-11, 3.2478e-11, // f10510 | |||
| 1585 | 2.9419e-11, 2.6703e-11, 2.4365e-11, 2.2412e-11, 2.0606e-11, // f10520 | |||
| 1586 | 1.9067e-11, 1.7800e-11, 1.6695e-11, 1.5729e-11, 1.4887e-11, // f10530 | |||
| 1587 | 1.4135e-11, 1.3519e-11, 1.2992e-11, 1.2563e-11, 1.2223e-11, // f10540 | |||
| 1588 | 1.1962e-11, 1.1775e-11, 1.1657e-11, 1.1605e-11, 1.1619e-11, // f10560 | |||
| 1589 | 1.1697e-11, 1.1839e-11, 1.2046e-11, 1.2319e-11, 1.2659e-11, // f10570 | |||
| 1590 | 1.3070e-11, 1.3553e-11, 1.4113e-11, 1.4754e-11, 1.5480e-11, // f10580 | |||
| 1591 | 1.6298e-11, 1.7214e-11, 1.8236e-11, 1.9372e-11, 2.0635e-11, // f10590 | |||
| 1592 | 2.2036e-11, 2.3590e-11, 2.5317e-11, 2.7242e-11, 2.9400e-11, // f10600 | |||
| 1593 | 3.1849e-11, 3.4654e-11, 3.7923e-11, 4.1695e-11, 4.6055e-11, // f10610 | |||
| 1594 | 5.0940e-11, 5.5624e-11, 6.0667e-11, 6.6261e-11, 7.2692e-11, // f10620 | |||
| 1595 | 7.9711e-11, 8.7976e-11, 9.6884e-11, 1.0775e-10, 1.2093e-10, // f10630 | |||
| 1596 | 1.3531e-10, 1.5404e-10, 1.7315e-10, 1.9862e-10, 2.3341e-10, // f10640 | |||
| 1597 | 2.7014e-10, 3.1716e-10, 3.6957e-10, 4.3233e-10, 5.2566e-10, // f10650 | |||
| 1598 | 6.2251e-10, 7.2149e-10, 8.3958e-10, 9.5931e-10, 1.1388e-09, // f10670 | |||
| 1599 | 1.2973e-09, 1.4442e-09, 1.5638e-09, 1.6974e-09, 1.8489e-09, // f10680 | |||
| 1600 | 1.9830e-09, 2.1720e-09, 2.3662e-09, 2.6987e-09, 3.1697e-09, // f10690 | |||
| 1601 | 3.6907e-09, 4.2625e-09, 4.7946e-09, 5.3848e-09, 6.0897e-09, // f10700 | |||
| 1602 | 6.4730e-09, 7.1483e-09, 7.7432e-09, 8.0851e-09, 8.5013e-09, // f10710 | |||
| 1603 | 8.5909e-09, 9.1890e-09, 9.3124e-09, 9.5936e-09, 9.8787e-09, // f10720 | |||
| 1604 | 9.9036e-09, 9.6712e-09, 9.2036e-09, 9.0466e-09, 8.9380e-09, // f10730 | |||
| 1605 | 9.1815e-09, 9.5092e-09, 1.0027e-08, 1.0876e-08, 1.1744e-08, // f10740 | |||
| 1606 | 1.1853e-08, 1.1296e-08, 1.0134e-08, 8.8245e-09, 7.3930e-09, // f10750 | |||
| 1607 | 5.7150e-09, 4.4884e-09, 3.4027e-09, 2.6054e-09, 2.0790e-09, // f10760 | |||
| 1608 | 1.7267e-09, 1.4724e-09, 1.2722e-09, 1.1234e-09, 1.0186e-09, // f10780 | |||
| 1609 | 9.4680e-10, 8.8854e-10, 8.5127e-10, 8.3157e-10, 8.2226e-10, // f10790 | |||
| 1610 | 8.3395e-10, 8.3294e-10, 8.4725e-10, 8.8814e-10, 9.3697e-10, // f10800 | |||
| 1611 | 1.0112e-09, 1.0412e-09, 1.0948e-09, 1.1810e-09, 1.2267e-09, // f10810 | |||
| 1612 | 1.3690e-09, 1.4512e-09, 1.5568e-09, 1.6552e-09, 1.7321e-09, // f10820 | |||
| 1613 | 1.8797e-09, 1.9210e-09, 1.9686e-09, 1.9917e-09, 1.9357e-09, // f10830 | |||
| 1614 | 1.8486e-09, 1.7575e-09, 1.7113e-09, 1.7163e-09, 1.7623e-09, // f10840 | |||
| 1615 | 1.8536e-09, 1.9765e-09, 2.1334e-09, 2.3237e-09, 2.3259e-09, // f10850 | |||
| 1616 | 2.1833e-09, 1.9785e-09, 1.7308e-09, 1.4596e-09, 1.1198e-09, // f10860 | |||
| 1617 | 8.7375e-10, 6.5381e-10, 4.8677e-10, 3.6756e-10, 2.9155e-10, // f10870 | |||
| 1618 | 2.3735e-10, 1.9590e-10, 1.6638e-10, 1.4549e-10, 1.2947e-10, // f10890 | |||
| 1619 | 1.1511e-10, 1.0548e-10, 9.6511e-11, 9.0469e-11, 8.5170e-11, // f10900 | |||
| 1620 | 7.7804e-11, 7.1971e-11, 6.6213e-11, 6.1063e-11, 5.5881e-11, // f10910 | |||
| 1621 | 5.0508e-11, 4.5932e-11, 4.1997e-11, 3.7672e-11, 3.3972e-11, // f10920 | |||
| 1622 | 3.0318e-11, 2.6769e-11, 2.3874e-11, 2.1336e-11, 1.9073e-11, // f10930 | |||
| 1623 | 1.7313e-11, 1.5904e-11, 1.4684e-11, 1.3698e-11, 1.2873e-11, // f10940 | |||
| 1624 | 1.2175e-11, 1.1542e-11, 1.1024e-11, 1.0602e-11, 1.0267e-11, // f10950 | |||
| 1625 | 1.0012e-11, 9.8379e-12, 9.7482e-12, 9.7564e-12, 9.8613e-12, // f10960 | |||
| 1626 | 1.0092e-11, 1.0418e-11, 1.0868e-11, 1.1585e-11, 1.2351e-11, // f10970 | |||
| 1627 | 1.3372e-11, 1.4841e-11, 1.6457e-11, 1.8681e-11, 2.0550e-11, // f10980 | |||
| 1628 | 2.2912e-11, 2.5958e-11, 2.9137e-11, 3.2368e-11, 3.4848e-11, // f11000 | |||
| 1629 | 3.8462e-11, 4.2190e-11, 4.5629e-11, 4.9022e-11, 5.4232e-11, // f11010 | |||
| 1630 | 6.1900e-11, 7.1953e-11, 8.5368e-11, 9.9699e-11, 1.1734e-10, // f11020 | |||
| 1631 | 1.4185e-10, 1.7017e-10, 1.9813e-10, 2.3859e-10, 2.7304e-10, // f11030 | |||
| 1632 | 3.0971e-10, 3.5129e-10, 3.9405e-10, 4.5194e-10, 4.8932e-10, // f11040 | |||
| 1633 | 5.2436e-10, 5.4098e-10, 5.5542e-10, 5.7794e-10, 5.6992e-10, // f11050 | |||
| 1634 | 5.8790e-10, 6.1526e-10, 6.8034e-10, 6.7956e-10, 6.6864e-10, // f11060 | |||
| 1635 | 6.9329e-10, 7.2971e-10, 7.6546e-10, 7.5078e-10, 7.8406e-10, // f11070 | |||
| 1636 | 8.3896e-10, 9.0111e-10, 9.1994e-10, 8.7189e-10, 8.1426e-10, // f11080 | |||
| 1637 | 7.3097e-10, 6.3357e-10, 5.1371e-10, 4.0936e-10, 3.2918e-10, // f11090 | |||
| 1638 | 2.6255e-10, 2.0724e-10, 1.6879e-10, 1.4165e-10, 1.1989e-10, // f11110 | |||
| 1639 | 1.0125e-10, 8.9629e-11, 7.8458e-11, 6.8826e-11, 6.0935e-11, // f11120 | |||
| 1640 | 5.5208e-11, 5.2262e-11, 5.0260e-11, 4.8457e-11, 4.7888e-11, // f11130 | |||
| 1641 | 4.8032e-11, 5.0838e-11, 5.4668e-11, 5.5790e-11, 6.0056e-11, // f11140 | |||
| 1642 | 6.3811e-11, 6.8848e-11, 7.4590e-11, 7.8249e-11, 8.3371e-11, // f11150 | |||
| 1643 | 8.3641e-11, 8.6591e-11, 8.9599e-11, 9.3487e-11, 1.0066e-10, // f11160 | |||
| 1644 | 1.0765e-10, 1.0851e-10, 1.0619e-10, 1.0557e-10, 1.0460e-10, // f11170 | |||
| 1645 | 1.0796e-10, 1.0523e-10, 1.0674e-10, 1.1261e-10, 1.1431e-10, // f11180 | |||
| 1646 | 1.1408e-10, 1.0901e-10, 9.9105e-11, 8.8077e-11, 6.9928e-11, // f11190 | |||
| 1647 | 5.4595e-11, 4.5401e-11, 3.6313e-11, 2.6986e-11, 1.9463e-11, // f11200 | |||
| 1648 | 1.4577e-11, 1.1583e-11, 9.5492e-12, 8.0770e-12, 6.9642e-12, // f11220 | |||
| 1649 | 6.0966e-12, 5.4046e-12, 4.8431e-12, 4.3815e-12, 3.9987e-12, // f11230 | |||
| 1650 | 3.6790e-12, 3.4113e-12, 3.1868e-12, 2.9992e-12, 2.8434e-12, // f11240 | |||
| 1651 | 2.7153e-12, 2.6120e-12, 2.5311e-12, 2.4705e-12, 2.4290e-12, // f11250 | |||
| 1652 | 2.4053e-12, 2.3988e-12, 2.4087e-12, 2.4349e-12, 2.4771e-12, // f11260 | |||
| 1653 | 2.5355e-12, 2.6103e-12, 2.7019e-12, 2.8110e-12, 2.9383e-12, // f11270 | |||
| 1654 | 3.0848e-12, 3.2518e-12, 3.4405e-12, 3.6527e-12, 3.8902e-12, // f11280 | |||
| 1655 | 4.1555e-12, 4.4510e-12, 4.7801e-12, 5.1462e-12, 5.5539e-12, // f11290 | |||
| 1656 | 6.0086e-12, 6.5171e-12, 7.0884e-12, 7.7357e-12, 8.4831e-12, // f11300 | |||
| 1657 | 9.3096e-12, 1.0282e-11, 1.1407e-11, 1.2690e-11, 1.4148e-11, // f11310 | |||
| 1658 | 1.5888e-11, 1.7992e-11, 2.0523e-11, 2.3342e-11, 2.6578e-11, // f11330 | |||
| 1659 | 3.0909e-11, 3.6228e-11, 4.2053e-11, 4.9059e-11, 5.9273e-11, // f11340 | |||
| 1660 | 7.0166e-11, 8.2298e-11, 9.7071e-11, 1.1673e-10, 1.4010e-10, // f11350 | |||
| 1661 | 1.6621e-10, 2.0127e-10, 2.3586e-10, 2.7050e-10, 3.0950e-10, // f11360 | |||
| 1662 | 3.6584e-10, 4.1278e-10, 4.6591e-10, 5.2220e-10, 5.5246e-10, // f11370 | |||
| 1663 | 6.1500e-10, 6.5878e-10, 7.1167e-10, 7.9372e-10, 8.6975e-10, // f11380 | |||
| 1664 | 9.6459e-10, 9.7368e-10, 9.8142e-10, 1.0202e-09, 1.0200e-09, // f11390 | |||
| 1665 | 1.0356e-09, 1.0092e-09, 1.0269e-09, 1.0366e-09, 1.0490e-09, // f11400 | |||
| 1666 | 1.0717e-09, 1.0792e-09, 1.1016e-09, 1.0849e-09, 1.0929e-09, // f11410 | |||
| 1667 | 1.0971e-09, 1.0969e-09, 1.0460e-09, 9.2026e-10, 8.1113e-10, // f11420 | |||
| 1668 | 6.8635e-10, 5.5369e-10, 4.2908e-10, 3.3384e-10, 2.6480e-10, // f11440 | |||
| 1669 | 2.0810e-10, 1.6915e-10, 1.4051e-10, 1.1867e-10, 1.0158e-10, // f11450 | |||
| 1670 | 8.8990e-11, 7.9175e-11, 7.0440e-11, 6.3453e-11, 5.7009e-11, // f11460 | |||
| 1671 | 5.1662e-11, 4.7219e-11, 4.3454e-11, 4.0229e-11, 3.7689e-11, // f11470 | |||
| 1672 | 3.6567e-11, 3.5865e-11, 3.5955e-11, 3.5928e-11, 3.6298e-11, // f11480 | |||
| 1673 | 3.7629e-11, 3.9300e-11, 4.1829e-11, 4.4806e-11, 5.0534e-11, // f11490 | |||
| 1674 | 5.6672e-11, 6.2138e-11, 6.8678e-11, 7.6111e-11, 8.4591e-11, // f11500 | |||
| 1675 | 9.2634e-11, 9.8085e-11, 1.0830e-10, 1.1949e-10, 1.2511e-10, // f11510 | |||
| 1676 | 1.3394e-10, 1.3505e-10, 1.4342e-10, 1.4874e-10, 1.4920e-10, // f11520 | |||
| 1677 | 1.5872e-10, 1.5972e-10, 1.5821e-10, 1.5425e-10, 1.4937e-10, // f11530 | |||
| 1678 | 1.5089e-10, 1.5521e-10, 1.6325e-10, 1.6924e-10, 1.8265e-10, // f11550 | |||
| 1679 | 1.9612e-10, 2.0176e-10, 1.9359e-10, 1.7085e-10, 1.5197e-10, // f11560 | |||
| 1680 | 1.2646e-10, 9.8552e-11, 7.4530e-11, 5.5052e-11, 4.2315e-11, // f11570 | |||
| 1681 | 3.2736e-11, 2.6171e-11, 2.1909e-11, 1.8286e-11, 1.5752e-11, // f11580 | |||
| 1682 | 1.3859e-11, 1.2288e-11, 1.1002e-11, 9.7534e-12, 8.8412e-12, // f11590 | |||
| 1683 | 8.0169e-12, 7.2855e-12, 6.8734e-12, 6.4121e-12, 6.1471e-12, // f11600 | |||
| 1684 | 5.7780e-12, 5.3478e-12, 4.9652e-12, 4.4043e-12, 3.9862e-12, // f11610 | |||
| 1685 | 3.4684e-12, 2.9681e-12, 2.5791e-12, 2.2339e-12, 1.9247e-12, // f11620 | |||
| 1686 | 1.6849e-12, 1.4863e-12, 1.3291e-12, 1.2021e-12, 1.0947e-12, // f11630 | |||
| 1687 | 1.0015e-12, 9.1935e-13, 8.4612e-13, 7.8036e-13, 7.2100e-13, // f11640 | |||
| 1688 | 6.6718e-13, 6.1821e-13, 5.7353e-13, 5.3269e-13, 4.9526e-13, // f11660 | |||
| 1689 | 4.6093e-13, 4.2937e-13, 4.0034e-13, 3.7361e-13, 3.4895e-13, // f11670 | |||
| 1690 | 3.2621e-13, 3.0520e-13, 2.8578e-13, 2.6782e-13, 2.5120e-13, // f11680 | |||
| 1691 | 2.3581e-13, 2.2154e-13, 2.0832e-13, 1.9605e-13, 1.8466e-13, // f11690 | |||
| 1692 | 1.7408e-13, 1.6425e-13, 1.5511e-13, 1.4661e-13, 1.3869e-13, // f11700 | |||
| 1693 | 1.3131e-13, 1.2444e-13, 1.1803e-13, 1.1205e-13, 1.0646e-13, // f11710 | |||
| 1694 | 1.0124e-13, 9.6358e-14, 9.1789e-14, 8.7509e-14, 8.3498e-14, // f11720 | |||
| 1695 | 7.9735e-14, 7.6202e-14, 7.2882e-14, 6.9760e-14, 6.6822e-14, // f11730 | |||
| 1696 | 6.4053e-14, 6.1442e-14, 5.8978e-14, 5.6650e-14, 5.4448e-14, // f11740 | |||
| 1697 | 5.2364e-14, 5.0389e-14, 4.8516e-14, 4.6738e-14, 4.5048e-14, // f11750 | |||
| 1698 | 4.3441e-14, 4.1911e-14, 4.0453e-14, 3.9063e-14, 3.7735e-14, // f11770 | |||
| 1699 | 3.6467e-14, 3.5254e-14, 3.4093e-14, 3.2980e-14, 3.1914e-14, // f11780 | |||
| 1700 | 3.0891e-14, 2.9909e-14, 2.8965e-14, 2.8058e-14, 2.7185e-14, // f11790 | |||
| 1701 | 2.6344e-14, 2.5535e-14, 2.4755e-14, 2.4002e-14, 2.3276e-14, // f11800 | |||
| 1702 | 2.2576e-14, 2.1899e-14, 2.1245e-14, 2.0613e-14, 2.0002e-14, // f11810 | |||
| 1703 | 1.9411e-14, 1.8839e-14, 1.8285e-14, 1.7749e-14, 1.7230e-14, // f11820 | |||
| 1704 | 1.6727e-14, 1.6240e-14, 1.5768e-14, 1.5310e-14, 1.4867e-14, // f11830 | |||
| 1705 | 1.4436e-14, 1.4019e-14, 1.3614e-14, 1.3221e-14, 1.2840e-14, // f11840 | |||
| 1706 | 1.2471e-14, 1.2112e-14, 1.1764e-14, 1.1425e-14, 1.1097e-14, // f11850 | |||
| 1707 | 1.0779e-14, 1.0469e-14, 1.0169e-14, 9.8775e-15, 9.5943e-15, // f11860 | |||
| 1708 | 9.3193e-15, 9.0522e-15, 8.7928e-15, 8.5409e-15, 8.2962e-15, // f11880 | |||
| 1709 | 8.0586e-15, 7.8278e-15, 7.6036e-15, 7.3858e-15, 7.1742e-15, // f11890 | |||
| 1710 | 6.9687e-15, 6.7691e-15, 6.5752e-15, 6.3868e-15, 6.2038e-15, // f11900 | |||
| 1711 | 6.0260e-15, 5.8533e-15, 5.6856e-15, 5.5226e-15, 5.3642e-15, // f11910 | |||
| 1712 | 5.2104e-15, 5.0610e-15, 4.9158e-15, 4.7748e-15, 4.6378e-15, // f11920 | |||
| 1713 | 4.5047e-15, 4.3753e-15, 4.2497e-15, 4.1277e-15, 4.0091e-15, // f11930 | |||
| 1714 | 3.8939e-15, 3.7820e-15, 3.6733e-15, 3.5677e-15, 3.4651e-15, // f11940 | |||
| 1715 | 3.3655e-15, 3.2686e-15, 3.1746e-15, 3.0832e-15, 2.9944e-15, // f11950 | |||
| 1716 | 2.9082e-15, 2.8244e-15, 2.7431e-15, 2.6640e-15, 2.5872e-15, // f11960 | |||
| 1717 | 2.5126e-15, 2.4401e-15, 2.3697e-15, 2.3014e-15, 2.2349e-15, // f11970 | |||
| 1718 | 2.1704e-15, 2.1077e-15, 2.0468e-15, 1.9877e-15, 1.9302e-15, // f11990 | |||
| 1719 | 1.8744e-15, 1.8202e-15, 1.7675e-15, 1.7164e-15, 1.6667e-15, // f12000 | |||
| 1720 | 1.6184e-15, 1.5716e-15, 1.5260e-15, 1.4818e-15, 1.4389e-15, // f12010 | |||
| 1721 | 1.3971e-15, 1.3566e-15, 1.3172e-15, 1.2790e-15, 1.2419e-15, // f12020 | |||
| 1722 | 1.2058e-15, 1.1708e-15, 1.1368e-15, 1.1037e-15, 1.0716e-15, // f12030 | |||
| 1723 | 1.0405e-15, 1.0102e-15, 9.8079e-16, 9.5224e-16, 9.2451e-16, // f12040 | |||
| 1724 | 8.9758e-16, 8.7142e-16, 8.4602e-16, 8.2136e-16, 7.9740e-16, // f12050 | |||
| 1725 | 7.7414e-16, 7.5154e-16, 7.2961e-16, 7.0830e-16, 6.8761e-16, // f12060 | |||
| 1726 | 6.6752e-16, 6.4801e-16, 6.2906e-16, 6.1066e-16, 5.9280e-16, // f12070 | |||
| 1727 | 5.7545e-16, 5.5860e-16, 5.4224e-16, 5.2636e-16, 5.1094e-16, // f12080 | |||
| 1728 | 4.9596e-16}; | |||
| 1729 | ||||
| 1730 | ||||
| 1731 | ||||
| 1732 | ||||
| 1733 | ||||
| 1734 | ||||
| 1735 | ||||
| 1736 | /* | |||
| 1737 | --------------------------- CKD_MT_1.00 ------------------------- | |||
| 1738 | ||||
| 1739 | 11 February 2003 | |||
| 1740 | ||||
| 1741 | Release Notes for MT_CKD_1.00 | |||
| 1742 | ||||
| 1743 | Prepared by S. A. Clough, | |||
| 1744 | AER Inc., | |||
| 1745 | 131 Harwell Avenue | |||
| 1746 | Lexington, MA 02421 | |||
| 1747 | clough@aer.com | |||
| 1748 | ||||
| 1749 | This is the initial release of the MT_CKD water vapor continuum and | |||
| 1750 | represents the first recomputation of the entire self and foreign | |||
| 1751 | broadened continuum since the original model was developed in the | |||
| 1752 | 1980s. This version of the continuum is implemented in the line-by-line | |||
| 1753 | model LBLRTM v7.01 and will be utilized in all related AER Radiative | |||
| 1754 | Transfer models. | |||
| 1755 | ||||
| 1756 | further information can be found under | |||
| 1757 | http://www.rtweb.aer.com/continuum_frame.html | |||
| 1758 | ||||
| 1759 | Transformation from original F77 code to C/C++ by | |||
| 1760 | T. Kuhn, iup Bremen, August 2003 | |||
| 1761 | ||||
| 1762 | --------------------------- CKD_MT_1.00 ------------------------- | |||
| 1763 | */ | |||
| 1764 | ||||
| 1765 | ||||
| 1766 | // H2O self continuum parameters at T=296 K | |||
| 1767 | // date of last update: 11/18/02 | |||
| 1768 | // units of (CM**3/MOL)*1.E-20 | |||
| 1769 | const Numeric SL296_ckd_mt_100_v1 = -20.0; | |||
| 1770 | const Numeric SL296_ckd_mt_100_v2 = 20000.0; | |||
| 1771 | const Numeric SL296_ckd_mt_100_dv = 10.0; | |||
| 1772 | const int SL296_ckd_mt_100_npt = 2003; | |||
| 1773 | const double SL296_ckd_mt_100[SL296_ckd_mt_100_npt+addF77fields] = { | |||
| 1774 | 0.000e0, 1.720e-01, 1.695e-01, | |||
| 1775 | 1.700e-01, 1.695e-01, 1.720e-01, 1.680e-01, 1.687e-01, | |||
| 1776 | 1.624e-01, 1.606e-01, 1.508e-01, 1.447e-01, 1.344e-01, | |||
| 1777 | 1.214e-01, 1.133e-01, 1.009e-01, 9.217e-02, 8.297e-02, | |||
| 1778 | 6.989e-02, 6.513e-02, 5.469e-02, 5.056e-02, 4.417e-02, | |||
| 1779 | 3.779e-02, 3.484e-02, 2.994e-02, 2.720e-02, 2.325e-02, | |||
| 1780 | 2.063e-02, 1.818e-02, 1.592e-02, 1.405e-02, 1.251e-02, | |||
| 1781 | 1.080e-02, 9.647e-03, 8.424e-03, 7.519e-03, 6.555e-03, | |||
| 1782 | 5.880e-03, 5.136e-03, 4.511e-03, 3.989e-03, 3.509e-03, | |||
| 1783 | 3.114e-03, 2.740e-03, 2.446e-03, 2.144e-03, 1.895e-03, | |||
| 1784 | 1.676e-03, 1.486e-03, 1.312e-03, 1.164e-03, 1.031e-03, | |||
| 1785 | 9.129e-04, 8.106e-04, 7.213e-04, 6.400e-04, 5.687e-04, | |||
| 1786 | 5.063e-04, 4.511e-04, 4.029e-04, 3.596e-04, 3.220e-04, | |||
| 1787 | 2.889e-04, 2.597e-04, 2.337e-04, 2.108e-04, 1.907e-04, | |||
| 1788 | 1.728e-04, 1.570e-04, 1.430e-04, 1.305e-04, 1.195e-04, | |||
| 1789 | 1.097e-04, 1.009e-04, 9.307e-05, 8.604e-05, 7.971e-05, | |||
| 1790 | 7.407e-05, 6.896e-05, 6.433e-05, 6.013e-05, 5.631e-05, | |||
| 1791 | 5.283e-05, 4.963e-05, 4.669e-05, 4.398e-05, 4.148e-05, | |||
| 1792 | 3.917e-05, 3.702e-05, 3.502e-05, 3.316e-05, 3.142e-05, | |||
| 1793 | 2.978e-05, 2.825e-05, 2.681e-05, 2.546e-05, 2.419e-05, | |||
| 1794 | 2.299e-05, 2.186e-05, 2.079e-05, 1.979e-05, 1.884e-05, | |||
| 1795 | 1.795e-05, 1.711e-05, 1.633e-05, 1.559e-05, 1.490e-05, | |||
| 1796 | 1.426e-05, 1.367e-05, 1.312e-05, 1.263e-05, 1.218e-05, | |||
| 1797 | 1.178e-05, 1.143e-05, 1.112e-05, 1.088e-05, 1.070e-05, | |||
| 1798 | 1.057e-05, 1.050e-05, 1.051e-05, 1.059e-05, 1.076e-05, | |||
| 1799 | 1.100e-05, 1.133e-05, 1.180e-05, 1.237e-05, 1.308e-05, | |||
| 1800 | 1.393e-05, 1.483e-05, 1.614e-05, 1.758e-05, 1.930e-05, | |||
| 1801 | 2.123e-05, 2.346e-05, 2.647e-05, 2.930e-05, 3.279e-05, | |||
| 1802 | 3.745e-05, 4.152e-05, 4.813e-05, 5.477e-05, 6.203e-05, | |||
| 1803 | 7.331e-05, 8.056e-05, 9.882e-05, 1.050e-04, 1.210e-04, | |||
| 1804 | 1.341e-04, 1.572e-04, 1.698e-04, 1.968e-04, 2.175e-04, | |||
| 1805 | 2.431e-04, 2.735e-04, 2.867e-04, 3.190e-04, 3.371e-04, | |||
| 1806 | 3.554e-04, 3.726e-04, 3.837e-04, 3.878e-04, 3.864e-04, | |||
| 1807 | 3.858e-04, 3.841e-04, 3.852e-04, 3.815e-04, 3.762e-04, | |||
| 1808 | 3.618e-04, 3.579e-04, 3.450e-04, 3.202e-04, 3.018e-04, | |||
| 1809 | 2.785e-04, 2.602e-04, 2.416e-04, 2.097e-04, 1.939e-04, | |||
| 1810 | 1.689e-04, 1.498e-04, 1.308e-04, 1.170e-04, 1.011e-04, | |||
| 1811 | 9.237e-05, 7.909e-05, 7.006e-05, 6.112e-05, 5.401e-05, | |||
| 1812 | 4.914e-05, 4.266e-05, 3.963e-05, 3.316e-05, 3.037e-05, | |||
| 1813 | 2.598e-05, 2.294e-05, 2.066e-05, 1.813e-05, 1.583e-05, | |||
| 1814 | 1.423e-05, 1.247e-05, 1.116e-05, 9.760e-06, 8.596e-06, | |||
| 1815 | 7.720e-06, 6.825e-06, 6.108e-06, 5.366e-06, 4.733e-06, | |||
| 1816 | 4.229e-06, 3.731e-06, 3.346e-06, 2.972e-06, 2.628e-06, | |||
| 1817 | 2.356e-06, 2.102e-06, 1.878e-06, 1.678e-06, 1.507e-06, | |||
| 1818 | 1.348e-06, 1.210e-06, 1.089e-06, 9.806e-07, 8.857e-07, | |||
| 1819 | 8.004e-07, 7.261e-07, 6.599e-07, 6.005e-07, 5.479e-07, | |||
| 1820 | 5.011e-07, 4.595e-07, 4.219e-07, 3.885e-07, 3.583e-07, | |||
| 1821 | 3.314e-07, 3.071e-07, 2.852e-07, 2.654e-07, 2.474e-07, | |||
| 1822 | 2.311e-07, 2.162e-07, 2.026e-07, 1.902e-07, 1.788e-07, | |||
| 1823 | 1.683e-07, 1.587e-07, 1.497e-07, 1.415e-07, 1.338e-07, | |||
| 1824 | 1.266e-07, 1.200e-07, 1.138e-07, 1.080e-07, 1.027e-07, | |||
| 1825 | 9.764e-08, 9.296e-08, 8.862e-08, 8.458e-08, 8.087e-08, | |||
| 1826 | 7.744e-08, 7.429e-08, 7.145e-08, 6.893e-08, 6.664e-08, | |||
| 1827 | 6.468e-08, 6.322e-08, 6.162e-08, 6.070e-08, 5.992e-08, | |||
| 1828 | 5.913e-08, 5.841e-08, 5.796e-08, 5.757e-08, 5.746e-08, | |||
| 1829 | 5.731e-08, 5.679e-08, 5.577e-08, 5.671e-08, 5.656e-08, | |||
| 1830 | 5.594e-08, 5.593e-08, 5.602e-08, 5.620e-08, 5.693e-08, | |||
| 1831 | 5.725e-08, 5.858e-08, 6.037e-08, 6.249e-08, 6.535e-08, | |||
| 1832 | 6.899e-08, 7.356e-08, 7.918e-08, 8.618e-08, 9.385e-08, | |||
| 1833 | 1.039e-07, 1.158e-07, 1.290e-07, 1.437e-07, 1.650e-07, | |||
| 1834 | 1.871e-07, 2.121e-07, 2.427e-07, 2.773e-07, 3.247e-07, | |||
| 1835 | 3.677e-07, 4.037e-07, 4.776e-07, 5.101e-07, 6.214e-07, | |||
| 1836 | 6.936e-07, 7.581e-07, 8.486e-07, 9.355e-07, 9.942e-07, | |||
| 1837 | 1.063e-06, 1.123e-06, 1.191e-06, 1.215e-06, 1.247e-06, | |||
| 1838 | 1.260e-06, 1.271e-06, 1.284e-06, 1.317e-06, 1.323e-06, | |||
| 1839 | 1.349e-06, 1.353e-06, 1.362e-06, 1.344e-06, 1.329e-06, | |||
| 1840 | 1.336e-06, 1.327e-06, 1.325e-06, 1.359e-06, 1.374e-06, | |||
| 1841 | 1.415e-06, 1.462e-06, 1.526e-06, 1.619e-06, 1.735e-06, | |||
| 1842 | 1.863e-06, 2.034e-06, 2.265e-06, 2.482e-06, 2.756e-06, | |||
| 1843 | 3.103e-06, 3.466e-06, 3.832e-06, 4.378e-06, 4.913e-06, | |||
| 1844 | 5.651e-06, 6.311e-06, 7.169e-06, 8.057e-06, 9.253e-06, | |||
| 1845 | 1.047e-05, 1.212e-05, 1.360e-05, 1.569e-05, 1.776e-05, | |||
| 1846 | 2.020e-05, 2.281e-05, 2.683e-05, 2.994e-05, 3.488e-05, | |||
| 1847 | 3.896e-05, 4.499e-05, 5.175e-05, 6.035e-05, 6.340e-05, | |||
| 1848 | 7.281e-05, 7.923e-05, 8.348e-05, 9.631e-05, 1.044e-04, | |||
| 1849 | 1.102e-04, 1.176e-04, 1.244e-04, 1.283e-04, 1.326e-04, | |||
| 1850 | 1.400e-04, 1.395e-04, 1.387e-04, 1.363e-04, 1.314e-04, | |||
| 1851 | 1.241e-04, 1.228e-04, 1.148e-04, 1.086e-04, 1.018e-04, | |||
| 1852 | 8.890e-05, 8.316e-05, 7.292e-05, 6.452e-05, 5.625e-05, | |||
| 1853 | 5.045e-05, 4.380e-05, 3.762e-05, 3.290e-05, 2.836e-05, | |||
| 1854 | 2.485e-05, 2.168e-05, 1.895e-05, 1.659e-05, 1.453e-05, | |||
| 1855 | 1.282e-05, 1.132e-05, 1.001e-05, 8.836e-06, 7.804e-06, | |||
| 1856 | 6.922e-06, 6.116e-06, 5.429e-06, 4.824e-06, 4.278e-06, | |||
| 1857 | 3.788e-06, 3.371e-06, 2.985e-06, 2.649e-06, 2.357e-06, | |||
| 1858 | 2.090e-06, 1.858e-06, 1.647e-06, 1.462e-06, 1.299e-06, | |||
| 1859 | 1.155e-06, 1.028e-06, 9.142e-07, 8.132e-07, 7.246e-07, | |||
| 1860 | 6.451e-07, 5.764e-07, 5.151e-07, 4.603e-07, 4.121e-07, | |||
| 1861 | 3.694e-07, 3.318e-07, 2.985e-07, 2.690e-07, 2.428e-07, | |||
| 1862 | 2.197e-07, 1.992e-07, 1.810e-07, 1.649e-07, 1.506e-07, | |||
| 1863 | 1.378e-07, 1.265e-07, 1.163e-07, 1.073e-07, 9.918e-08, | |||
| 1864 | 9.191e-08, 8.538e-08, 7.949e-08, 7.419e-08, 6.940e-08, | |||
| 1865 | 6.508e-08, 6.114e-08, 5.761e-08, 5.437e-08, 5.146e-08, | |||
| 1866 | 4.890e-08, 4.636e-08, 4.406e-08, 4.201e-08, 4.015e-08, | |||
| 1867 | 3.840e-08, 3.661e-08, 3.510e-08, 3.377e-08, 3.242e-08, | |||
| 1868 | 3.130e-08, 3.015e-08, 2.918e-08, 2.830e-08, 2.758e-08, | |||
| 1869 | 2.707e-08, 2.656e-08, 2.619e-08, 2.609e-08, 2.615e-08, | |||
| 1870 | 2.630e-08, 2.675e-08, 2.745e-08, 2.842e-08, 2.966e-08, | |||
| 1871 | 3.125e-08, 3.318e-08, 3.565e-08, 3.850e-08, 4.191e-08, | |||
| 1872 | 4.590e-08, 5.059e-08, 5.607e-08, 6.239e-08, 6.958e-08, | |||
| 1873 | 7.796e-08, 8.773e-08, 9.880e-08, 1.114e-07, 1.258e-07, | |||
| 1874 | 1.422e-07, 1.610e-07, 1.822e-07, 2.060e-07, 2.337e-07, | |||
| 1875 | 2.645e-07, 2.996e-07, 3.393e-07, 3.843e-07, 4.363e-07, | |||
| 1876 | 4.935e-07, 5.607e-07, 6.363e-07, 7.242e-07, 8.230e-07, | |||
| 1877 | 9.411e-07, 1.071e-06, 1.232e-06, 1.402e-06, 1.600e-06, | |||
| 1878 | 1.820e-06, 2.128e-06, 2.386e-06, 2.781e-06, 3.242e-06, | |||
| 1879 | 3.653e-06, 4.323e-06, 4.747e-06, 5.321e-06, 5.919e-06, | |||
| 1880 | 6.681e-06, 7.101e-06, 7.983e-06, 8.342e-06, 8.741e-06, | |||
| 1881 | 9.431e-06, 9.952e-06, 1.026e-05, 1.055e-05, 1.095e-05, | |||
| 1882 | 1.095e-05, 1.087e-05, 1.056e-05, 1.026e-05, 9.715e-06, | |||
| 1883 | 9.252e-06, 8.452e-06, 7.958e-06, 7.268e-06, 6.295e-06, | |||
| 1884 | 6.003e-06, 5.000e-06, 4.591e-06, 3.983e-06, 3.479e-06, | |||
| 1885 | 3.058e-06, 2.667e-06, 2.293e-06, 1.995e-06, 1.747e-06, | |||
| 1886 | 1.517e-06, 1.335e-06, 1.165e-06, 1.028e-06, 9.007e-07, | |||
| 1887 | 7.956e-07, 7.015e-07, 6.192e-07, 5.491e-07, 4.859e-07, | |||
| 1888 | 4.297e-07, 3.799e-07, 3.380e-07, 3.002e-07, 2.659e-07, | |||
| 1889 | 2.366e-07, 2.103e-07, 1.861e-07, 1.655e-07, 1.469e-07, | |||
| 1890 | 1.309e-07, 1.162e-07, 1.032e-07, 9.198e-08, 8.181e-08, | |||
| 1891 | 7.294e-08, 6.516e-08, 5.787e-08, 5.163e-08, 4.612e-08, | |||
| 1892 | 4.119e-08, 3.695e-08, 3.308e-08, 2.976e-08, 2.670e-08, | |||
| 1893 | 2.407e-08, 2.171e-08, 1.965e-08, 1.780e-08, 1.617e-08, | |||
| 1894 | 1.470e-08, 1.341e-08, 1.227e-08, 1.125e-08, 1.033e-08, | |||
| 1895 | 9.524e-09, 8.797e-09, 8.162e-09, 7.565e-09, 7.040e-09, | |||
| 1896 | 6.560e-09, 6.129e-09, 5.733e-09, 5.376e-09, 5.043e-09, | |||
| 1897 | 4.750e-09, 4.466e-09, 4.211e-09, 3.977e-09, 3.759e-09, | |||
| 1898 | 3.558e-09, 3.373e-09, 3.201e-09, 3.043e-09, 2.895e-09, | |||
| 1899 | 2.760e-09, 2.635e-09, 2.518e-09, 2.411e-09, 2.314e-09, | |||
| 1900 | 2.230e-09, 2.151e-09, 2.087e-09, 2.035e-09, 1.988e-09, | |||
| 1901 | 1.946e-09, 1.927e-09, 1.916e-09, 1.916e-09, 1.933e-09, | |||
| 1902 | 1.966e-09, 2.018e-09, 2.090e-09, 2.182e-09, 2.299e-09, | |||
| 1903 | 2.442e-09, 2.623e-09, 2.832e-09, 3.079e-09, 3.368e-09, | |||
| 1904 | 3.714e-09, 4.104e-09, 4.567e-09, 5.091e-09, 5.701e-09, | |||
| 1905 | 6.398e-09, 7.194e-09, 8.127e-09, 9.141e-09, 1.035e-08, | |||
| 1906 | 1.177e-08, 1.338e-08, 1.508e-08, 1.711e-08, 1.955e-08, | |||
| 1907 | 2.216e-08, 2.534e-08, 2.871e-08, 3.291e-08, 3.711e-08, | |||
| 1908 | 4.285e-08, 4.868e-08, 5.509e-08, 6.276e-08, 7.262e-08, | |||
| 1909 | 8.252e-08, 9.400e-08, 1.064e-07, 1.247e-07, 1.411e-07, | |||
| 1910 | 1.626e-07, 1.827e-07, 2.044e-07, 2.284e-07, 2.452e-07, | |||
| 1911 | 2.854e-07, 3.026e-07, 3.278e-07, 3.474e-07, 3.693e-07, | |||
| 1912 | 3.930e-07, 4.104e-07, 4.220e-07, 4.439e-07, 4.545e-07, | |||
| 1913 | 4.778e-07, 4.812e-07, 5.018e-07, 4.899e-07, 5.075e-07, | |||
| 1914 | 5.073e-07, 5.171e-07, 5.131e-07, 5.250e-07, 5.617e-07, | |||
| 1915 | 5.846e-07, 6.239e-07, 6.696e-07, 7.398e-07, 8.073e-07, | |||
| 1916 | 9.150e-07, 1.009e-06, 1.116e-06, 1.264e-06, 1.439e-06, | |||
| 1917 | 1.644e-06, 1.856e-06, 2.147e-06, 2.317e-06, 2.713e-06, | |||
| 1918 | 2.882e-06, 2.990e-06, 3.489e-06, 3.581e-06, 4.033e-06, | |||
| 1919 | 4.260e-06, 4.543e-06, 4.840e-06, 4.826e-06, 5.013e-06, | |||
| 1920 | 5.252e-06, 5.277e-06, 5.306e-06, 5.236e-06, 5.123e-06, | |||
| 1921 | 5.171e-06, 4.843e-06, 4.615e-06, 4.385e-06, 3.970e-06, | |||
| 1922 | 3.693e-06, 3.231e-06, 2.915e-06, 2.495e-06, 2.144e-06, | |||
| 1923 | 1.910e-06, 1.639e-06, 1.417e-06, 1.226e-06, 1.065e-06, | |||
| 1924 | 9.290e-07, 8.142e-07, 7.161e-07, 6.318e-07, 5.581e-07, | |||
| 1925 | 4.943e-07, 4.376e-07, 3.884e-07, 3.449e-07, 3.060e-07, | |||
| 1926 | 2.712e-07, 2.412e-07, 2.139e-07, 1.903e-07, 1.689e-07, | |||
| 1927 | 1.499e-07, 1.331e-07, 1.183e-07, 1.050e-07, 9.362e-08, | |||
| 1928 | 8.306e-08, 7.403e-08, 6.578e-08, 5.853e-08, 5.216e-08, | |||
| 1929 | 4.632e-08, 4.127e-08, 3.678e-08, 3.279e-08, 2.923e-08, | |||
| 1930 | 2.612e-08, 2.339e-08, 2.094e-08, 1.877e-08, 1.686e-08, | |||
| 1931 | 1.516e-08, 1.366e-08, 1.234e-08, 1.114e-08, 1.012e-08, | |||
| 1932 | 9.182e-09, 8.362e-09, 7.634e-09, 6.981e-09, 6.406e-09, | |||
| 1933 | 5.888e-09, 5.428e-09, 5.021e-09, 4.650e-09, 4.326e-09, | |||
| 1934 | 4.033e-09, 3.770e-09, 3.536e-09, 3.327e-09, 3.141e-09, | |||
| 1935 | 2.974e-09, 2.825e-09, 2.697e-09, 2.584e-09, 2.488e-09, | |||
| 1936 | 2.406e-09, 2.340e-09, 2.292e-09, 2.259e-09, 2.244e-09, | |||
| 1937 | 2.243e-09, 2.272e-09, 2.310e-09, 2.378e-09, 2.454e-09, | |||
| 1938 | 2.618e-09, 2.672e-09, 2.831e-09, 3.050e-09, 3.225e-09, | |||
| 1939 | 3.425e-09, 3.677e-09, 3.968e-09, 4.221e-09, 4.639e-09, | |||
| 1940 | 4.960e-09, 5.359e-09, 5.649e-09, 6.230e-09, 6.716e-09, | |||
| 1941 | 7.218e-09, 7.746e-09, 7.988e-09, 8.627e-09, 8.999e-09, | |||
| 1942 | 9.442e-09, 9.820e-09, 1.015e-08, 1.060e-08, 1.079e-08, | |||
| 1943 | 1.109e-08, 1.137e-08, 1.186e-08, 1.180e-08, 1.187e-08, | |||
| 1944 | 1.194e-08, 1.192e-08, 1.224e-08, 1.245e-08, 1.246e-08, | |||
| 1945 | 1.318e-08, 1.377e-08, 1.471e-08, 1.582e-08, 1.713e-08, | |||
| 1946 | 1.853e-08, 2.063e-08, 2.270e-08, 2.567e-08, 2.891e-08, | |||
| 1947 | 3.264e-08, 3.744e-08, 4.286e-08, 4.915e-08, 5.623e-08, | |||
| 1948 | 6.336e-08, 7.293e-08, 8.309e-08, 9.319e-08, 1.091e-07, | |||
| 1949 | 1.243e-07, 1.348e-07, 1.449e-07, 1.620e-07, 1.846e-07, | |||
| 1950 | 1.937e-07, 2.040e-07, 2.179e-07, 2.298e-07, 2.433e-07, | |||
| 1951 | 2.439e-07, 2.464e-07, 2.611e-07, 2.617e-07, 2.582e-07, | |||
| 1952 | 2.453e-07, 2.401e-07, 2.349e-07, 2.203e-07, 2.066e-07, | |||
| 1953 | 1.939e-07, 1.780e-07, 1.558e-07, 1.391e-07, 1.203e-07, | |||
| 1954 | 1.048e-07, 9.464e-08, 8.306e-08, 7.239e-08, 6.317e-08, | |||
| 1955 | 5.520e-08, 4.847e-08, 4.282e-08, 3.796e-08, 3.377e-08, | |||
| 1956 | 2.996e-08, 2.678e-08, 2.400e-08, 2.134e-08, 1.904e-08, | |||
| 1957 | 1.705e-08, 1.523e-08, 1.350e-08, 1.204e-08, 1.070e-08, | |||
| 1958 | 9.408e-09, 8.476e-09, 7.470e-09, 6.679e-09, 5.929e-09, | |||
| 1959 | 5.267e-09, 4.711e-09, 4.172e-09, 3.761e-09, 3.288e-09, | |||
| 1960 | 2.929e-09, 2.609e-09, 2.315e-09, 2.042e-09, 1.844e-09, | |||
| 1961 | 1.640e-09, 1.470e-09, 1.310e-09, 1.176e-09, 1.049e-09, | |||
| 1962 | 9.377e-10, 8.462e-10, 7.616e-10, 6.854e-10, 6.191e-10, | |||
| 1963 | 5.596e-10, 5.078e-10, 4.611e-10, 4.197e-10, 3.830e-10, | |||
| 1964 | 3.505e-10, 3.215e-10, 2.956e-10, 2.726e-10, 2.521e-10, | |||
| 1965 | 2.338e-10, 2.173e-10, 2.026e-10, 1.895e-10, 1.777e-10, | |||
| 1966 | 1.672e-10, 1.579e-10, 1.496e-10, 1.423e-10, 1.358e-10, | |||
| 1967 | 1.302e-10, 1.254e-10, 1.216e-10, 1.187e-10, 1.163e-10, | |||
| 1968 | 1.147e-10, 1.145e-10, 1.150e-10, 1.170e-10, 1.192e-10, | |||
| 1969 | 1.250e-10, 1.298e-10, 1.345e-10, 1.405e-10, 1.538e-10, | |||
| 1970 | 1.648e-10, 1.721e-10, 1.872e-10, 1.968e-10, 2.089e-10, | |||
| 1971 | 2.172e-10, 2.317e-10, 2.389e-10, 2.503e-10, 2.585e-10, | |||
| 1972 | 2.686e-10, 2.800e-10, 2.895e-10, 3.019e-10, 3.037e-10, | |||
| 1973 | 3.076e-10, 3.146e-10, 3.198e-10, 3.332e-10, 3.397e-10, | |||
| 1974 | 3.540e-10, 3.667e-10, 3.895e-10, 4.071e-10, 4.565e-10, | |||
| 1975 | 4.983e-10, 5.439e-10, 5.968e-10, 6.676e-10, 7.456e-10, | |||
| 1976 | 8.405e-10, 9.478e-10, 1.064e-09, 1.218e-09, 1.386e-09, | |||
| 1977 | 1.581e-09, 1.787e-09, 2.032e-09, 2.347e-09, 2.677e-09, | |||
| 1978 | 3.008e-09, 3.544e-09, 4.056e-09, 4.687e-09, 5.331e-09, | |||
| 1979 | 6.227e-09, 6.854e-09, 8.139e-09, 8.945e-09, 9.865e-09, | |||
| 1980 | 1.125e-08, 1.178e-08, 1.364e-08, 1.436e-08, 1.540e-08, | |||
| 1981 | 1.672e-08, 1.793e-08, 1.906e-08, 2.036e-08, 2.144e-08, | |||
| 1982 | 2.292e-08, 2.371e-08, 2.493e-08, 2.606e-08, 2.706e-08, | |||
| 1983 | 2.866e-08, 3.036e-08, 3.136e-08, 3.405e-08, 3.665e-08, | |||
| 1984 | 3.837e-08, 4.229e-08, 4.748e-08, 5.320e-08, 5.763e-08, | |||
| 1985 | 6.677e-08, 7.216e-08, 7.716e-08, 8.958e-08, 9.419e-08, | |||
| 1986 | 1.036e-07, 1.108e-07, 1.189e-07, 1.246e-07, 1.348e-07, | |||
| 1987 | 1.310e-07, 1.361e-07, 1.364e-07, 1.363e-07, 1.343e-07, | |||
| 1988 | 1.293e-07, 1.254e-07, 1.235e-07, 1.158e-07, 1.107e-07, | |||
| 1989 | 9.961e-08, 9.011e-08, 7.910e-08, 6.916e-08, 6.338e-08, | |||
| 1990 | 5.564e-08, 4.827e-08, 4.198e-08, 3.695e-08, 3.276e-08, | |||
| 1991 | 2.929e-08, 2.633e-08, 2.391e-08, 2.192e-08, 2.021e-08, | |||
| 1992 | 1.890e-08, 1.772e-08, 1.667e-08, 1.603e-08, 1.547e-08, | |||
| 1993 | 1.537e-08, 1.492e-08, 1.515e-08, 1.479e-08, 1.450e-08, | |||
| 1994 | 1.513e-08, 1.495e-08, 1.529e-08, 1.565e-08, 1.564e-08, | |||
| 1995 | 1.553e-08, 1.569e-08, 1.584e-08, 1.570e-08, 1.538e-08, | |||
| 1996 | 1.513e-08, 1.472e-08, 1.425e-08, 1.349e-08, 1.328e-08, | |||
| 1997 | 1.249e-08, 1.170e-08, 1.077e-08, 9.514e-09, 8.614e-09, | |||
| 1998 | 7.460e-09, 6.621e-09, 5.775e-09, 5.006e-09, 4.308e-09, | |||
| 1999 | 3.747e-09, 3.240e-09, 2.840e-09, 2.481e-09, 2.184e-09, | |||
| 2000 | 1.923e-09, 1.710e-09, 1.504e-09, 1.334e-09, 1.187e-09, | |||
| 2001 | 1.053e-09, 9.367e-10, 8.306e-10, 7.419e-10, 6.630e-10, | |||
| 2002 | 5.918e-10, 5.277e-10, 4.717e-10, 4.222e-10, 3.783e-10, | |||
| 2003 | 3.390e-10, 3.036e-10, 2.729e-10, 2.455e-10, 2.211e-10, | |||
| 2004 | 1.995e-10, 1.804e-10, 1.635e-10, 1.485e-10, 1.355e-10, | |||
| 2005 | 1.240e-10, 1.139e-10, 1.051e-10, 9.757e-11, 9.114e-11, | |||
| 2006 | 8.577e-11, 8.139e-11, 7.792e-11, 7.520e-11, 7.390e-11, | |||
| 2007 | 7.311e-11, 7.277e-11, 7.482e-11, 7.698e-11, 8.162e-11, | |||
| 2008 | 8.517e-11, 8.968e-11, 9.905e-11, 1.075e-10, 1.187e-10, | |||
| 2009 | 1.291e-10, 1.426e-10, 1.573e-10, 1.734e-10, 1.905e-10, | |||
| 2010 | 2.097e-10, 2.280e-10, 2.473e-10, 2.718e-10, 2.922e-10, | |||
| 2011 | 3.128e-10, 3.361e-10, 3.641e-10, 3.910e-10, 4.196e-10, | |||
| 2012 | 4.501e-10, 4.932e-10, 5.258e-10, 5.755e-10, 6.253e-10, | |||
| 2013 | 6.664e-10, 7.344e-10, 7.985e-10, 8.877e-10, 1.005e-09, | |||
| 2014 | 1.118e-09, 1.251e-09, 1.428e-09, 1.610e-09, 1.888e-09, | |||
| 2015 | 2.077e-09, 2.331e-09, 2.751e-09, 3.061e-09, 3.522e-09, | |||
| 2016 | 3.805e-09, 4.181e-09, 4.575e-09, 5.167e-09, 5.634e-09, | |||
| 2017 | 6.007e-09, 6.501e-09, 6.829e-09, 7.211e-09, 7.262e-09, | |||
| 2018 | 7.696e-09, 7.832e-09, 7.799e-09, 7.651e-09, 7.304e-09, | |||
| 2019 | 7.150e-09, 6.977e-09, 6.603e-09, 6.209e-09, 5.690e-09, | |||
| 2020 | 5.432e-09, 4.764e-09, 4.189e-09, 3.640e-09, 3.203e-09, | |||
| 2021 | 2.848e-09, 2.510e-09, 2.194e-09, 1.946e-09, 1.750e-09, | |||
| 2022 | 1.567e-09, 1.426e-09, 1.302e-09, 1.197e-09, 1.109e-09, | |||
| 2023 | 1.035e-09, 9.719e-10, 9.207e-10, 8.957e-10, 8.578e-10, | |||
| 2024 | 8.262e-10, 8.117e-10, 7.987e-10, 7.875e-10, 7.741e-10, | |||
| 2025 | 7.762e-10, 7.537e-10, 7.424e-10, 7.474e-10, 7.294e-10, | |||
| 2026 | 7.216e-10, 7.233e-10, 7.075e-10, 6.892e-10, 6.618e-10, | |||
| 2027 | 6.314e-10, 6.208e-10, 5.689e-10, 5.550e-10, 4.984e-10, | |||
| 2028 | 4.600e-10, 4.078e-10, 3.879e-10, 3.459e-10, 2.982e-10, | |||
| 2029 | 2.626e-10, 2.329e-10, 1.988e-10, 1.735e-10, 1.487e-10, | |||
| 2030 | 1.297e-10, 1.133e-10, 9.943e-11, 8.736e-11, 7.726e-11, | |||
| 2031 | 6.836e-11, 6.053e-11, 5.384e-11, 4.789e-11, 4.267e-11, | |||
| 2032 | 3.804e-11, 3.398e-11, 3.034e-11, 2.710e-11, 2.425e-11, | |||
| 2033 | 2.173e-11, 1.950e-11, 1.752e-11, 1.574e-11, 1.418e-11, | |||
| 2034 | 1.278e-11, 1.154e-11, 1.044e-11, 9.463e-12, 8.602e-12, | |||
| 2035 | 7.841e-12, 7.171e-12, 6.584e-12, 6.073e-12, 5.631e-12, | |||
| 2036 | 5.254e-12, 4.937e-12, 4.679e-12, 4.476e-12, 4.328e-12, | |||
| 2037 | 4.233e-12, 4.194e-12, 4.211e-12, 4.286e-12, 4.424e-12, | |||
| 2038 | 4.628e-12, 4.906e-12, 5.262e-12, 5.708e-12, 6.254e-12, | |||
| 2039 | 6.914e-12, 7.714e-12, 8.677e-12, 9.747e-12, 1.101e-11, | |||
| 2040 | 1.256e-11, 1.409e-11, 1.597e-11, 1.807e-11, 2.034e-11, | |||
| 2041 | 2.316e-11, 2.622e-11, 2.962e-11, 3.369e-11, 3.819e-11, | |||
| 2042 | 4.329e-11, 4.932e-11, 5.589e-11, 6.364e-11, 7.284e-11, | |||
| 2043 | 8.236e-11, 9.447e-11, 1.078e-10, 1.229e-10, 1.417e-10, | |||
| 2044 | 1.614e-10, 1.843e-10, 2.107e-10, 2.406e-10, 2.728e-10, | |||
| 2045 | 3.195e-10, 3.595e-10, 4.153e-10, 4.736e-10, 5.410e-10, | |||
| 2046 | 6.088e-10, 6.769e-10, 7.691e-10, 8.545e-10, 9.621e-10, | |||
| 2047 | 1.047e-09, 1.161e-09, 1.296e-09, 1.424e-09, 1.576e-09, | |||
| 2048 | 1.739e-09, 1.893e-09, 2.080e-09, 2.336e-09, 2.604e-09, | |||
| 2049 | 2.760e-09, 3.001e-09, 3.365e-09, 3.550e-09, 3.895e-09, | |||
| 2050 | 4.183e-09, 4.614e-09, 4.846e-09, 5.068e-09, 5.427e-09, | |||
| 2051 | 5.541e-09, 5.864e-09, 5.997e-09, 5.997e-09, 6.061e-09, | |||
| 2052 | 5.944e-09, 5.855e-09, 5.661e-09, 5.523e-09, 5.374e-09, | |||
| 2053 | 4.940e-09, 4.688e-09, 4.170e-09, 3.913e-09, 3.423e-09, | |||
| 2054 | 2.997e-09, 2.598e-09, 2.253e-09, 1.946e-09, 1.710e-09, | |||
| 2055 | 1.507e-09, 1.336e-09, 1.190e-09, 1.068e-09, 9.623e-10, | |||
| 2056 | 8.772e-10, 8.007e-10, 7.420e-10, 6.884e-10, 6.483e-10, | |||
| 2057 | 6.162e-10, 5.922e-10, 5.688e-10, 5.654e-10, 5.637e-10, | |||
| 2058 | 5.701e-10, 5.781e-10, 5.874e-10, 6.268e-10, 6.357e-10, | |||
| 2059 | 6.525e-10, 7.137e-10, 7.441e-10, 8.024e-10, 8.485e-10, | |||
| 2060 | 9.143e-10, 9.536e-10, 9.717e-10, 1.018e-09, 1.042e-09, | |||
| 2061 | 1.054e-09, 1.092e-09, 1.079e-09, 1.064e-09, 1.043e-09, | |||
| 2062 | 1.020e-09, 9.687e-10, 9.273e-10, 9.208e-10, 9.068e-10, | |||
| 2063 | 7.687e-10, 7.385e-10, 6.595e-10, 5.870e-10, 5.144e-10, | |||
| 2064 | 4.417e-10, 3.804e-10, 3.301e-10, 2.866e-10, 2.509e-10, | |||
| 2065 | 2.202e-10, 1.947e-10, 1.719e-10, 1.525e-10, 1.361e-10, | |||
| 2066 | 1.210e-10, 1.084e-10, 9.800e-11, 8.801e-11, 7.954e-11, | |||
| 2067 | 7.124e-11, 6.335e-11, 5.760e-11, 5.132e-11, 4.601e-11, | |||
| 2068 | 4.096e-11, 3.657e-11, 3.250e-11, 2.909e-11, 2.587e-11, | |||
| 2069 | 2.297e-11, 2.050e-11, 1.828e-11, 1.632e-11, 1.462e-11, | |||
| 2070 | 1.314e-11, 1.185e-11, 1.073e-11, 9.760e-12, 8.922e-12, | |||
| 2071 | 8.206e-12, 7.602e-12, 7.100e-12, 6.694e-12, 6.378e-12, | |||
| 2072 | 6.149e-12, 6.004e-12, 5.941e-12, 5.962e-12, 6.069e-12, | |||
| 2073 | 6.265e-12, 6.551e-12, 6.935e-12, 7.457e-12, 8.074e-12, | |||
| 2074 | 8.811e-12, 9.852e-12, 1.086e-11, 1.207e-11, 1.361e-11, | |||
| 2075 | 1.553e-11, 1.737e-11, 1.930e-11, 2.175e-11, 2.410e-11, | |||
| 2076 | 2.706e-11, 3.023e-11, 3.313e-11, 3.657e-11, 4.118e-11, | |||
| 2077 | 4.569e-11, 5.025e-11, 5.660e-11, 6.231e-11, 6.881e-11, | |||
| 2078 | 7.996e-11, 8.526e-11, 9.694e-11, 1.106e-10, 1.222e-10, | |||
| 2079 | 1.355e-10, 1.525e-10, 1.775e-10, 1.924e-10, 2.181e-10, | |||
| 2080 | 2.379e-10, 2.662e-10, 2.907e-10, 3.154e-10, 3.366e-10, | |||
| 2081 | 3.579e-10, 3.858e-10, 4.046e-10, 4.196e-10, 4.166e-10, | |||
| 2082 | 4.457e-10, 4.466e-10, 4.404e-10, 4.337e-10, 4.150e-10, | |||
| 2083 | 4.083e-10, 3.910e-10, 3.723e-10, 3.514e-10, 3.303e-10, | |||
| 2084 | 2.847e-10, 2.546e-10, 2.230e-10, 1.994e-10, 1.733e-10, | |||
| 2085 | 1.488e-10, 1.297e-10, 1.144e-10, 1.004e-10, 8.741e-11, | |||
| 2086 | 7.928e-11, 7.034e-11, 6.323e-11, 5.754e-11, 5.250e-11, | |||
| 2087 | 4.850e-11, 4.502e-11, 4.286e-11, 4.028e-11, 3.899e-11, | |||
| 2088 | 3.824e-11, 3.761e-11, 3.804e-11, 3.839e-11, 3.845e-11, | |||
| 2089 | 4.244e-11, 4.382e-11, 4.582e-11, 4.847e-11, 5.209e-11, | |||
| 2090 | 5.384e-11, 5.887e-11, 6.371e-11, 6.737e-11, 7.168e-11, | |||
| 2091 | 7.415e-11, 7.827e-11, 8.037e-11, 8.120e-11, 8.071e-11, | |||
| 2092 | 8.008e-11, 7.851e-11, 7.544e-11, 7.377e-11, 7.173e-11, | |||
| 2093 | 6.801e-11, 6.267e-11, 5.727e-11, 5.288e-11, 4.853e-11, | |||
| 2094 | 4.082e-11, 3.645e-11, 3.136e-11, 2.672e-11, 2.304e-11, | |||
| 2095 | 1.986e-11, 1.725e-11, 1.503e-11, 1.315e-11, 1.153e-11, | |||
| 2096 | 1.014e-11, 8.942e-12, 7.901e-12, 6.993e-12, 6.199e-12, | |||
| 2097 | 5.502e-12, 4.890e-12, 4.351e-12, 3.878e-12, 3.461e-12, | |||
| 2098 | 3.094e-12, 2.771e-12, 2.488e-12, 2.241e-12, 2.025e-12, | |||
| 2099 | 1.838e-12, 1.677e-12, 1.541e-12, 1.427e-12, 1.335e-12, | |||
| 2100 | 1.262e-12, 1.209e-12, 1.176e-12, 1.161e-12, 1.165e-12, | |||
| 2101 | 1.189e-12, 1.234e-12, 1.300e-12, 1.389e-12, 1.503e-12, | |||
| 2102 | 1.644e-12, 1.814e-12, 2.017e-12, 2.255e-12, 2.534e-12, | |||
| 2103 | 2.858e-12, 3.231e-12, 3.661e-12, 4.153e-12, 4.717e-12, | |||
| 2104 | 5.360e-12, 6.094e-12, 6.930e-12, 7.882e-12, 8.966e-12, | |||
| 2105 | 1.020e-11, 1.162e-11, 1.324e-11, 1.510e-11, 1.720e-11, | |||
| 2106 | 1.965e-11, 2.237e-11, 2.560e-11, 2.927e-11, 3.371e-11, | |||
| 2107 | 3.842e-11, 4.429e-11, 5.139e-11, 5.798e-11, 6.697e-11, | |||
| 2108 | 7.626e-11, 8.647e-11, 1.022e-10, 1.136e-10, 1.300e-10, | |||
| 2109 | 1.481e-10, 1.672e-10, 1.871e-10, 2.126e-10, 2.357e-10, | |||
| 2110 | 2.583e-10, 2.997e-10, 3.289e-10, 3.702e-10, 4.012e-10, | |||
| 2111 | 4.319e-10, 4.527e-10, 5.001e-10, 5.448e-10, 5.611e-10, | |||
| 2112 | 5.760e-10, 5.965e-10, 6.079e-10, 6.207e-10, 6.276e-10, | |||
| 2113 | 6.222e-10, 6.137e-10, 6.000e-10, 5.814e-10, 5.393e-10, | |||
| 2114 | 5.350e-10, 4.947e-10, 4.629e-10, 4.117e-10, 3.712e-10, | |||
| 2115 | 3.372e-10, 2.923e-10, 2.550e-10, 2.232e-10, 1.929e-10, | |||
| 2116 | 1.679e-10, 1.460e-10, 1.289e-10, 1.130e-10, 9.953e-11, | |||
| 2117 | 8.763e-11, 7.760e-11, 6.900e-11, 6.160e-11, 5.525e-11, | |||
| 2118 | 4.958e-11, 4.489e-11, 4.072e-11, 3.728e-11, 3.438e-11, | |||
| 2119 | 3.205e-11, 3.006e-11, 2.848e-11, 2.766e-11, 2.688e-11, | |||
| 2120 | 2.664e-11, 2.670e-11, 2.696e-11, 2.786e-11, 2.861e-11, | |||
| 2121 | 3.009e-11, 3.178e-11, 3.389e-11, 3.587e-11, 3.819e-11, | |||
| 2122 | 4.054e-11, 4.417e-11, 4.703e-11, 5.137e-11, 5.460e-11, | |||
| 2123 | 6.055e-11, 6.333e-11, 6.773e-11, 7.219e-11, 7.717e-11, | |||
| 2124 | 8.131e-11, 8.491e-11, 8.574e-11, 9.010e-11, 9.017e-11, | |||
| 2125 | 8.999e-11, 8.959e-11, 8.838e-11, 8.579e-11, 8.162e-11, | |||
| 2126 | 8.098e-11, 7.472e-11, 7.108e-11, 6.559e-11, 5.994e-11, | |||
| 2127 | 5.172e-11, 4.424e-11, 3.951e-11, 3.340e-11, 2.902e-11, | |||
| 2128 | 2.541e-11, 2.215e-11, 1.945e-11, 1.716e-11, 1.503e-11, | |||
| 2129 | 1.339e-11, 1.185e-11, 1.050e-11, 9.336e-12, 8.307e-12, | |||
| 2130 | 7.312e-12, 6.550e-12, 5.836e-12, 5.178e-12, 4.600e-12, | |||
| 2131 | 4.086e-12, 3.639e-12, 3.247e-12, 2.904e-12, 2.604e-12, | |||
| 2132 | 2.341e-12, 2.112e-12, 1.914e-12, 1.744e-12, 1.598e-12, | |||
| 2133 | 1.476e-12, 1.374e-12, 1.293e-12, 1.230e-12, 1.185e-12, | |||
| 2134 | 1.158e-12, 1.147e-12, 1.154e-12, 1.177e-12, 1.219e-12, | |||
| 2135 | 1.280e-12, 1.360e-12, 1.463e-12, 1.591e-12, 1.750e-12, | |||
| 2136 | 1.940e-12, 2.156e-12, 2.430e-12, 2.748e-12, 3.052e-12, | |||
| 2137 | 3.533e-12, 3.967e-12, 4.471e-12, 5.041e-12, 5.860e-12, | |||
| 2138 | 6.664e-12, 7.522e-12, 8.342e-12, 9.412e-12, 1.072e-11, | |||
| 2139 | 1.213e-11, 1.343e-11, 1.496e-11, 1.664e-11, 1.822e-11, | |||
| 2140 | 2.029e-11, 2.233e-11, 2.457e-11, 2.709e-11, 2.928e-11, | |||
| 2141 | 3.115e-11, 3.356e-11, 3.592e-11, 3.818e-11, 3.936e-11, | |||
| 2142 | 4.061e-11, 4.149e-11, 4.299e-11, 4.223e-11, 4.251e-11, | |||
| 2143 | 4.287e-11, 4.177e-11, 4.094e-11, 3.942e-11, 3.772e-11, | |||
| 2144 | 3.614e-11, 3.394e-11, 3.222e-11, 2.791e-11, 2.665e-11, | |||
| 2145 | 2.309e-11, 2.032e-11, 1.740e-11, 1.535e-11, 1.323e-11, | |||
| 2146 | 1.151e-11, 9.803e-12, 8.650e-12, 7.540e-12, 6.619e-12, | |||
| 2147 | 5.832e-12, 5.113e-12, 4.503e-12, 3.975e-12, 3.520e-12, | |||
| 2148 | 3.112e-12, 2.797e-12, 2.500e-12, 2.240e-12, 2.013e-12, | |||
| 2149 | 1.819e-12, 1.653e-12, 1.513e-12, 1.395e-12, 1.299e-12, | |||
| 2150 | 1.225e-12, 1.168e-12, 1.124e-12, 1.148e-12, 1.107e-12, | |||
| 2151 | 1.128e-12, 1.169e-12, 1.233e-12, 1.307e-12, 1.359e-12, | |||
| 2152 | 1.543e-12, 1.686e-12, 1.794e-12, 2.028e-12, 2.210e-12, | |||
| 2153 | 2.441e-12, 2.653e-12, 2.828e-12, 3.093e-12, 3.280e-12, | |||
| 2154 | 3.551e-12, 3.677e-12, 3.803e-12, 3.844e-12, 4.068e-12, | |||
| 2155 | 4.093e-12, 4.002e-12, 3.904e-12, 3.624e-12, 3.633e-12, | |||
| 2156 | 3.622e-12, 3.443e-12, 3.184e-12, 2.934e-12, 2.476e-12, | |||
| 2157 | 2.212e-12, 1.867e-12, 1.594e-12, 1.370e-12, 1.192e-12, | |||
| 2158 | 1.045e-12, 9.211e-13, 8.170e-13, 7.290e-13, 6.550e-13, | |||
| 2159 | 5.929e-13, 5.415e-13, 4.995e-13, 4.661e-13, 4.406e-13, | |||
| 2160 | 4.225e-13, 4.116e-13, 4.075e-13, 4.102e-13, 4.198e-13, | |||
| 2161 | 4.365e-13, 4.606e-13, 4.925e-13, 5.326e-13, 5.818e-13, | |||
| 2162 | 6.407e-13, 7.104e-13, 7.920e-13, 8.868e-13, 9.964e-13, | |||
| 2163 | 1.123e-12, 1.268e-12, 1.434e-12, 1.626e-12, 1.848e-12, | |||
| 2164 | 2.107e-12, 2.422e-12, 2.772e-12, 3.145e-12, 3.704e-12, | |||
| 2165 | 4.270e-12, 4.721e-12, 5.361e-12, 6.083e-12, 7.095e-12, | |||
| 2166 | 7.968e-12, 9.228e-12, 1.048e-11, 1.187e-11, 1.336e-11, | |||
| 2167 | 1.577e-11, 1.772e-11, 2.017e-11, 2.250e-11, 2.630e-11, | |||
| 2168 | 2.911e-11, 3.356e-11, 3.820e-11, 4.173e-11, 4.811e-11, | |||
| 2169 | 5.254e-11, 5.839e-11, 6.187e-11, 6.805e-11, 7.118e-11, | |||
| 2170 | 7.369e-11, 7.664e-11, 7.794e-11, 7.947e-11, 8.036e-11, | |||
| 2171 | 7.954e-11, 7.849e-11, 7.518e-11, 7.462e-11, 6.926e-11, | |||
| 2172 | 6.531e-11, 6.197e-11, 5.421e-11, 4.777e-11, 4.111e-11, | |||
| 2173 | 3.679e-11, 3.166e-11, 2.786e-11, 2.436e-11, 2.144e-11, | |||
| 2174 | 1.859e-11, 1.628e-11, 1.414e-11, 1.237e-11, 1.093e-11, | |||
| 2175 | 9.558e-12 }; | |||
| 2176 | ||||
| 2177 | // H2O self continuum parameters at T=260 K | |||
| 2178 | // date of last update: 11/18/02 | |||
| 2179 | // units of (CM**3/MOL)*1.E-20 | |||
| 2180 | const Numeric SL260_ckd_mt_100_v1 = -20.0; | |||
| 2181 | const Numeric SL260_ckd_mt_100_v2 = 20000.0; | |||
| 2182 | const Numeric SL260_ckd_mt_100_dv = 10.0; | |||
| 2183 | const int SL260_ckd_mt_100_npt = 2003; | |||
| 2184 | const double SL260_ckd_mt_100[SL260_ckd_mt_100_npt+addF77fields] = { | |||
| 2185 | 0.000e0, 2.749e-01, 2.732e-01, | |||
| 2186 | 2.752e-01, 2.732e-01, 2.749e-01, 2.676e-01, 2.667e-01, | |||
| 2187 | 2.545e-01, 2.497e-01, 2.327e-01, 2.218e-01, 2.036e-01, | |||
| 2188 | 1.825e-01, 1.694e-01, 1.497e-01, 1.353e-01, 1.210e-01, | |||
| 2189 | 1.014e-01, 9.405e-02, 7.848e-02, 7.195e-02, 6.246e-02, | |||
| 2190 | 5.306e-02, 4.853e-02, 4.138e-02, 3.735e-02, 3.171e-02, | |||
| 2191 | 2.785e-02, 2.431e-02, 2.111e-02, 1.845e-02, 1.640e-02, | |||
| 2192 | 1.405e-02, 1.255e-02, 1.098e-02, 9.797e-03, 8.646e-03, | |||
| 2193 | 7.779e-03, 6.898e-03, 6.099e-03, 5.453e-03, 4.909e-03, | |||
| 2194 | 4.413e-03, 3.959e-03, 3.581e-03, 3.199e-03, 2.871e-03, | |||
| 2195 | 2.583e-03, 2.330e-03, 2.086e-03, 1.874e-03, 1.684e-03, | |||
| 2196 | 1.512e-03, 1.361e-03, 1.225e-03, 1.100e-03, 9.890e-04, | |||
| 2197 | 8.916e-04, 8.039e-04, 7.256e-04, 6.545e-04, 5.918e-04, | |||
| 2198 | 5.359e-04, 4.867e-04, 4.426e-04, 4.033e-04, 3.682e-04, | |||
| 2199 | 3.366e-04, 3.085e-04, 2.833e-04, 2.605e-04, 2.403e-04, | |||
| 2200 | 2.221e-04, 2.055e-04, 1.908e-04, 1.774e-04, 1.653e-04, | |||
| 2201 | 1.544e-04, 1.443e-04, 1.351e-04, 1.267e-04, 1.190e-04, | |||
| 2202 | 1.119e-04, 1.053e-04, 9.922e-05, 9.355e-05, 8.831e-05, | |||
| 2203 | 8.339e-05, 7.878e-05, 7.449e-05, 7.043e-05, 6.664e-05, | |||
| 2204 | 6.307e-05, 5.969e-05, 5.654e-05, 5.357e-05, 5.075e-05, | |||
| 2205 | 4.810e-05, 4.560e-05, 4.322e-05, 4.102e-05, 3.892e-05, | |||
| 2206 | 3.696e-05, 3.511e-05, 3.339e-05, 3.177e-05, 3.026e-05, | |||
| 2207 | 2.886e-05, 2.756e-05, 2.636e-05, 2.527e-05, 2.427e-05, | |||
| 2208 | 2.337e-05, 2.257e-05, 2.185e-05, 2.127e-05, 2.080e-05, | |||
| 2209 | 2.041e-05, 2.013e-05, 2.000e-05, 1.997e-05, 2.009e-05, | |||
| 2210 | 2.031e-05, 2.068e-05, 2.124e-05, 2.189e-05, 2.267e-05, | |||
| 2211 | 2.364e-05, 2.463e-05, 2.618e-05, 2.774e-05, 2.937e-05, | |||
| 2212 | 3.144e-05, 3.359e-05, 3.695e-05, 4.002e-05, 4.374e-05, | |||
| 2213 | 4.947e-05, 5.431e-05, 6.281e-05, 7.169e-05, 8.157e-05, | |||
| 2214 | 9.728e-05, 1.079e-04, 1.337e-04, 1.442e-04, 1.683e-04, | |||
| 2215 | 1.879e-04, 2.223e-04, 2.425e-04, 2.838e-04, 3.143e-04, | |||
| 2216 | 3.527e-04, 4.012e-04, 4.237e-04, 4.747e-04, 5.057e-04, | |||
| 2217 | 5.409e-04, 5.734e-04, 5.944e-04, 6.077e-04, 6.175e-04, | |||
| 2218 | 6.238e-04, 6.226e-04, 6.248e-04, 6.192e-04, 6.098e-04, | |||
| 2219 | 5.818e-04, 5.709e-04, 5.465e-04, 5.043e-04, 4.699e-04, | |||
| 2220 | 4.294e-04, 3.984e-04, 3.672e-04, 3.152e-04, 2.883e-04, | |||
| 2221 | 2.503e-04, 2.211e-04, 1.920e-04, 1.714e-04, 1.485e-04, | |||
| 2222 | 1.358e-04, 1.156e-04, 1.021e-04, 8.887e-05, 7.842e-05, | |||
| 2223 | 7.120e-05, 6.186e-05, 5.730e-05, 4.792e-05, 4.364e-05, | |||
| 2224 | 3.720e-05, 3.280e-05, 2.946e-05, 2.591e-05, 2.261e-05, | |||
| 2225 | 2.048e-05, 1.813e-05, 1.630e-05, 1.447e-05, 1.282e-05, | |||
| 2226 | 1.167e-05, 1.041e-05, 9.449e-06, 8.510e-06, 7.596e-06, | |||
| 2227 | 6.961e-06, 6.272e-06, 5.728e-06, 5.198e-06, 4.667e-06, | |||
| 2228 | 4.288e-06, 3.897e-06, 3.551e-06, 3.235e-06, 2.952e-06, | |||
| 2229 | 2.688e-06, 2.449e-06, 2.241e-06, 2.050e-06, 1.879e-06, | |||
| 2230 | 1.722e-06, 1.582e-06, 1.456e-06, 1.339e-06, 1.236e-06, | |||
| 2231 | 1.144e-06, 1.060e-06, 9.830e-07, 9.149e-07, 8.535e-07, | |||
| 2232 | 7.973e-07, 7.466e-07, 6.999e-07, 6.574e-07, 6.180e-07, | |||
| 2233 | 5.821e-07, 5.487e-07, 5.180e-07, 4.896e-07, 4.631e-07, | |||
| 2234 | 4.386e-07, 4.160e-07, 3.945e-07, 3.748e-07, 3.562e-07, | |||
| 2235 | 3.385e-07, 3.222e-07, 3.068e-07, 2.922e-07, 2.788e-07, | |||
| 2236 | 2.659e-07, 2.539e-07, 2.425e-07, 2.318e-07, 2.219e-07, | |||
| 2237 | 2.127e-07, 2.039e-07, 1.958e-07, 1.885e-07, 1.818e-07, | |||
| 2238 | 1.758e-07, 1.711e-07, 1.662e-07, 1.630e-07, 1.605e-07, | |||
| 2239 | 1.580e-07, 1.559e-07, 1.545e-07, 1.532e-07, 1.522e-07, | |||
| 2240 | 1.510e-07, 1.495e-07, 1.465e-07, 1.483e-07, 1.469e-07, | |||
| 2241 | 1.448e-07, 1.444e-07, 1.436e-07, 1.426e-07, 1.431e-07, | |||
| 2242 | 1.425e-07, 1.445e-07, 1.477e-07, 1.515e-07, 1.567e-07, | |||
| 2243 | 1.634e-07, 1.712e-07, 1.802e-07, 1.914e-07, 2.024e-07, | |||
| 2244 | 2.159e-07, 2.295e-07, 2.461e-07, 2.621e-07, 2.868e-07, | |||
| 2245 | 3.102e-07, 3.394e-07, 3.784e-07, 4.223e-07, 4.864e-07, | |||
| 2246 | 5.501e-07, 6.039e-07, 7.193e-07, 7.728e-07, 9.514e-07, | |||
| 2247 | 1.073e-06, 1.180e-06, 1.333e-06, 1.472e-06, 1.566e-06, | |||
| 2248 | 1.677e-06, 1.784e-06, 1.904e-06, 1.953e-06, 2.020e-06, | |||
| 2249 | 2.074e-06, 2.128e-06, 2.162e-06, 2.219e-06, 2.221e-06, | |||
| 2250 | 2.249e-06, 2.239e-06, 2.235e-06, 2.185e-06, 2.141e-06, | |||
| 2251 | 2.124e-06, 2.090e-06, 2.068e-06, 2.100e-06, 2.104e-06, | |||
| 2252 | 2.142e-06, 2.181e-06, 2.257e-06, 2.362e-06, 2.500e-06, | |||
| 2253 | 2.664e-06, 2.884e-06, 3.189e-06, 3.480e-06, 3.847e-06, | |||
| 2254 | 4.313e-06, 4.790e-06, 5.250e-06, 5.989e-06, 6.692e-06, | |||
| 2255 | 7.668e-06, 8.520e-06, 9.606e-06, 1.073e-05, 1.225e-05, | |||
| 2256 | 1.377e-05, 1.582e-05, 1.761e-05, 2.029e-05, 2.284e-05, | |||
| 2257 | 2.602e-05, 2.940e-05, 3.483e-05, 3.928e-05, 4.618e-05, | |||
| 2258 | 5.240e-05, 6.132e-05, 7.183e-05, 8.521e-05, 9.111e-05, | |||
| 2259 | 1.070e-04, 1.184e-04, 1.264e-04, 1.475e-04, 1.612e-04, | |||
| 2260 | 1.704e-04, 1.818e-04, 1.924e-04, 1.994e-04, 2.061e-04, | |||
| 2261 | 2.180e-04, 2.187e-04, 2.200e-04, 2.196e-04, 2.131e-04, | |||
| 2262 | 2.015e-04, 1.988e-04, 1.847e-04, 1.729e-04, 1.597e-04, | |||
| 2263 | 1.373e-04, 1.262e-04, 1.087e-04, 9.439e-05, 8.061e-05, | |||
| 2264 | 7.093e-05, 6.049e-05, 5.120e-05, 4.435e-05, 3.817e-05, | |||
| 2265 | 3.340e-05, 2.927e-05, 2.573e-05, 2.291e-05, 2.040e-05, | |||
| 2266 | 1.827e-05, 1.636e-05, 1.463e-05, 1.309e-05, 1.170e-05, | |||
| 2267 | 1.047e-05, 9.315e-06, 8.328e-06, 7.458e-06, 6.665e-06, | |||
| 2268 | 5.940e-06, 5.316e-06, 4.752e-06, 4.252e-06, 3.825e-06, | |||
| 2269 | 3.421e-06, 3.064e-06, 2.746e-06, 2.465e-06, 2.216e-06, | |||
| 2270 | 1.990e-06, 1.790e-06, 1.609e-06, 1.449e-06, 1.306e-06, | |||
| 2271 | 1.177e-06, 1.063e-06, 9.607e-07, 8.672e-07, 7.855e-07, | |||
| 2272 | 7.118e-07, 6.460e-07, 5.871e-07, 5.340e-07, 4.868e-07, | |||
| 2273 | 4.447e-07, 4.068e-07, 3.729e-07, 3.423e-07, 3.151e-07, | |||
| 2274 | 2.905e-07, 2.686e-07, 2.484e-07, 2.306e-07, 2.142e-07, | |||
| 2275 | 1.995e-07, 1.860e-07, 1.738e-07, 1.626e-07, 1.522e-07, | |||
| 2276 | 1.427e-07, 1.338e-07, 1.258e-07, 1.183e-07, 1.116e-07, | |||
| 2277 | 1.056e-07, 9.972e-08, 9.460e-08, 9.007e-08, 8.592e-08, | |||
| 2278 | 8.195e-08, 7.816e-08, 7.483e-08, 7.193e-08, 6.892e-08, | |||
| 2279 | 6.642e-08, 6.386e-08, 6.154e-08, 5.949e-08, 5.764e-08, | |||
| 2280 | 5.622e-08, 5.479e-08, 5.364e-08, 5.301e-08, 5.267e-08, | |||
| 2281 | 5.263e-08, 5.313e-08, 5.410e-08, 5.550e-08, 5.745e-08, | |||
| 2282 | 6.003e-08, 6.311e-08, 6.713e-08, 7.173e-08, 7.724e-08, | |||
| 2283 | 8.368e-08, 9.121e-08, 9.986e-08, 1.097e-07, 1.209e-07, | |||
| 2284 | 1.338e-07, 1.486e-07, 1.651e-07, 1.837e-07, 2.048e-07, | |||
| 2285 | 2.289e-07, 2.557e-07, 2.857e-07, 3.195e-07, 3.587e-07, | |||
| 2286 | 4.015e-07, 4.497e-07, 5.049e-07, 5.665e-07, 6.366e-07, | |||
| 2287 | 7.121e-07, 7.996e-07, 8.946e-07, 1.002e-06, 1.117e-06, | |||
| 2288 | 1.262e-06, 1.416e-06, 1.611e-06, 1.807e-06, 2.056e-06, | |||
| 2289 | 2.351e-06, 2.769e-06, 3.138e-06, 3.699e-06, 4.386e-06, | |||
| 2290 | 5.041e-06, 6.074e-06, 6.812e-06, 7.790e-06, 8.855e-06, | |||
| 2291 | 1.014e-05, 1.095e-05, 1.245e-05, 1.316e-05, 1.390e-05, | |||
| 2292 | 1.504e-05, 1.583e-05, 1.617e-05, 1.652e-05, 1.713e-05, | |||
| 2293 | 1.724e-05, 1.715e-05, 1.668e-05, 1.629e-05, 1.552e-05, | |||
| 2294 | 1.478e-05, 1.340e-05, 1.245e-05, 1.121e-05, 9.575e-06, | |||
| 2295 | 8.956e-06, 7.345e-06, 6.597e-06, 5.612e-06, 4.818e-06, | |||
| 2296 | 4.165e-06, 3.579e-06, 3.041e-06, 2.623e-06, 2.290e-06, | |||
| 2297 | 1.984e-06, 1.748e-06, 1.534e-06, 1.369e-06, 1.219e-06, | |||
| 2298 | 1.092e-06, 9.800e-07, 8.762e-07, 7.896e-07, 7.104e-07, | |||
| 2299 | 6.364e-07, 5.691e-07, 5.107e-07, 4.575e-07, 4.090e-07, | |||
| 2300 | 3.667e-07, 3.287e-07, 2.931e-07, 2.633e-07, 2.356e-07, | |||
| 2301 | 2.111e-07, 1.895e-07, 1.697e-07, 1.525e-07, 1.369e-07, | |||
| 2302 | 1.233e-07, 1.114e-07, 9.988e-08, 9.004e-08, 8.149e-08, | |||
| 2303 | 7.352e-08, 6.662e-08, 6.030e-08, 5.479e-08, 4.974e-08, | |||
| 2304 | 4.532e-08, 4.129e-08, 3.781e-08, 3.462e-08, 3.176e-08, | |||
| 2305 | 2.919e-08, 2.687e-08, 2.481e-08, 2.292e-08, 2.119e-08, | |||
| 2306 | 1.967e-08, 1.828e-08, 1.706e-08, 1.589e-08, 1.487e-08, | |||
| 2307 | 1.393e-08, 1.307e-08, 1.228e-08, 1.156e-08, 1.089e-08, | |||
| 2308 | 1.028e-08, 9.696e-09, 9.159e-09, 8.658e-09, 8.187e-09, | |||
| 2309 | 7.746e-09, 7.340e-09, 6.953e-09, 6.594e-09, 6.259e-09, | |||
| 2310 | 5.948e-09, 5.660e-09, 5.386e-09, 5.135e-09, 4.903e-09, | |||
| 2311 | 4.703e-09, 4.515e-09, 4.362e-09, 4.233e-09, 4.117e-09, | |||
| 2312 | 4.017e-09, 3.962e-09, 3.924e-09, 3.905e-09, 3.922e-09, | |||
| 2313 | 3.967e-09, 4.046e-09, 4.165e-09, 4.320e-09, 4.522e-09, | |||
| 2314 | 4.769e-09, 5.083e-09, 5.443e-09, 5.872e-09, 6.366e-09, | |||
| 2315 | 6.949e-09, 7.601e-09, 8.371e-09, 9.220e-09, 1.020e-08, | |||
| 2316 | 1.129e-08, 1.251e-08, 1.393e-08, 1.542e-08, 1.720e-08, | |||
| 2317 | 1.926e-08, 2.152e-08, 2.392e-08, 2.678e-08, 3.028e-08, | |||
| 2318 | 3.390e-08, 3.836e-08, 4.309e-08, 4.900e-08, 5.481e-08, | |||
| 2319 | 6.252e-08, 7.039e-08, 7.883e-08, 8.849e-08, 1.012e-07, | |||
| 2320 | 1.142e-07, 1.300e-07, 1.475e-07, 1.732e-07, 1.978e-07, | |||
| 2321 | 2.304e-07, 2.631e-07, 2.988e-07, 3.392e-07, 3.690e-07, | |||
| 2322 | 4.355e-07, 4.672e-07, 5.110e-07, 5.461e-07, 5.828e-07, | |||
| 2323 | 6.233e-07, 6.509e-07, 6.672e-07, 6.969e-07, 7.104e-07, | |||
| 2324 | 7.439e-07, 7.463e-07, 7.708e-07, 7.466e-07, 7.668e-07, | |||
| 2325 | 7.549e-07, 7.586e-07, 7.384e-07, 7.439e-07, 7.785e-07, | |||
| 2326 | 7.915e-07, 8.310e-07, 8.745e-07, 9.558e-07, 1.038e-06, | |||
| 2327 | 1.173e-06, 1.304e-06, 1.452e-06, 1.671e-06, 1.931e-06, | |||
| 2328 | 2.239e-06, 2.578e-06, 3.032e-06, 3.334e-06, 3.980e-06, | |||
| 2329 | 4.300e-06, 4.518e-06, 5.321e-06, 5.508e-06, 6.211e-06, | |||
| 2330 | 6.590e-06, 7.046e-06, 7.555e-06, 7.558e-06, 7.875e-06, | |||
| 2331 | 8.319e-06, 8.433e-06, 8.590e-06, 8.503e-06, 8.304e-06, | |||
| 2332 | 8.336e-06, 7.739e-06, 7.301e-06, 6.827e-06, 6.078e-06, | |||
| 2333 | 5.551e-06, 4.762e-06, 4.224e-06, 3.538e-06, 2.984e-06, | |||
| 2334 | 2.619e-06, 2.227e-06, 1.923e-06, 1.669e-06, 1.462e-06, | |||
| 2335 | 1.294e-06, 1.155e-06, 1.033e-06, 9.231e-07, 8.238e-07, | |||
| 2336 | 7.360e-07, 6.564e-07, 5.869e-07, 5.236e-07, 4.673e-07, | |||
| 2337 | 4.174e-07, 3.736e-07, 3.330e-07, 2.976e-07, 2.657e-07, | |||
| 2338 | 2.367e-07, 2.106e-07, 1.877e-07, 1.671e-07, 1.494e-07, | |||
| 2339 | 1.332e-07, 1.192e-07, 1.065e-07, 9.558e-08, 8.586e-08, | |||
| 2340 | 7.717e-08, 6.958e-08, 6.278e-08, 5.666e-08, 5.121e-08, | |||
| 2341 | 4.647e-08, 4.213e-08, 3.815e-08, 3.459e-08, 3.146e-08, | |||
| 2342 | 2.862e-08, 2.604e-08, 2.375e-08, 2.162e-08, 1.981e-08, | |||
| 2343 | 1.817e-08, 1.670e-08, 1.537e-08, 1.417e-08, 1.310e-08, | |||
| 2344 | 1.215e-08, 1.128e-08, 1.050e-08, 9.793e-09, 9.158e-09, | |||
| 2345 | 8.586e-09, 8.068e-09, 7.595e-09, 7.166e-09, 6.778e-09, | |||
| 2346 | 6.427e-09, 6.108e-09, 5.826e-09, 5.571e-09, 5.347e-09, | |||
| 2347 | 5.144e-09, 4.968e-09, 4.822e-09, 4.692e-09, 4.589e-09, | |||
| 2348 | 4.506e-09, 4.467e-09, 4.440e-09, 4.466e-09, 4.515e-09, | |||
| 2349 | 4.718e-09, 4.729e-09, 4.937e-09, 5.249e-09, 5.466e-09, | |||
| 2350 | 5.713e-09, 6.030e-09, 6.436e-09, 6.741e-09, 7.330e-09, | |||
| 2351 | 7.787e-09, 8.414e-09, 8.908e-09, 9.868e-09, 1.069e-08, | |||
| 2352 | 1.158e-08, 1.253e-08, 1.300e-08, 1.409e-08, 1.470e-08, | |||
| 2353 | 1.548e-08, 1.612e-08, 1.666e-08, 1.736e-08, 1.763e-08, | |||
| 2354 | 1.812e-08, 1.852e-08, 1.923e-08, 1.897e-08, 1.893e-08, | |||
| 2355 | 1.888e-08, 1.868e-08, 1.895e-08, 1.899e-08, 1.876e-08, | |||
| 2356 | 1.960e-08, 2.020e-08, 2.121e-08, 2.239e-08, 2.379e-08, | |||
| 2357 | 2.526e-08, 2.766e-08, 2.994e-08, 3.332e-08, 3.703e-08, | |||
| 2358 | 4.158e-08, 4.774e-08, 5.499e-08, 6.355e-08, 7.349e-08, | |||
| 2359 | 8.414e-08, 9.846e-08, 1.143e-07, 1.307e-07, 1.562e-07, | |||
| 2360 | 1.817e-07, 2.011e-07, 2.192e-07, 2.485e-07, 2.867e-07, | |||
| 2361 | 3.035e-07, 3.223e-07, 3.443e-07, 3.617e-07, 3.793e-07, | |||
| 2362 | 3.793e-07, 3.839e-07, 4.081e-07, 4.117e-07, 4.085e-07, | |||
| 2363 | 3.920e-07, 3.851e-07, 3.754e-07, 3.490e-07, 3.229e-07, | |||
| 2364 | 2.978e-07, 2.691e-07, 2.312e-07, 2.029e-07, 1.721e-07, | |||
| 2365 | 1.472e-07, 1.308e-07, 1.132e-07, 9.736e-08, 8.458e-08, | |||
| 2366 | 7.402e-08, 6.534e-08, 5.811e-08, 5.235e-08, 4.762e-08, | |||
| 2367 | 4.293e-08, 3.896e-08, 3.526e-08, 3.165e-08, 2.833e-08, | |||
| 2368 | 2.551e-08, 2.288e-08, 2.036e-08, 1.820e-08, 1.626e-08, | |||
| 2369 | 1.438e-08, 1.299e-08, 1.149e-08, 1.030e-08, 9.148e-09, | |||
| 2370 | 8.122e-09, 7.264e-09, 6.425e-09, 5.777e-09, 5.060e-09, | |||
| 2371 | 4.502e-09, 4.013e-09, 3.567e-09, 3.145e-09, 2.864e-09, | |||
| 2372 | 2.553e-09, 2.311e-09, 2.087e-09, 1.886e-09, 1.716e-09, | |||
| 2373 | 1.556e-09, 1.432e-09, 1.311e-09, 1.202e-09, 1.104e-09, | |||
| 2374 | 1.013e-09, 9.293e-10, 8.493e-10, 7.790e-10, 7.185e-10, | |||
| 2375 | 6.642e-10, 6.141e-10, 5.684e-10, 5.346e-10, 5.032e-10, | |||
| 2376 | 4.725e-10, 4.439e-10, 4.176e-10, 3.930e-10, 3.714e-10, | |||
| 2377 | 3.515e-10, 3.332e-10, 3.167e-10, 3.020e-10, 2.887e-10, | |||
| 2378 | 2.769e-10, 2.665e-10, 2.578e-10, 2.503e-10, 2.436e-10, | |||
| 2379 | 2.377e-10, 2.342e-10, 2.305e-10, 2.296e-10, 2.278e-10, | |||
| 2380 | 2.321e-10, 2.355e-10, 2.402e-10, 2.478e-10, 2.670e-10, | |||
| 2381 | 2.848e-10, 2.982e-10, 3.263e-10, 3.438e-10, 3.649e-10, | |||
| 2382 | 3.829e-10, 4.115e-10, 4.264e-10, 4.473e-10, 4.630e-10, | |||
| 2383 | 4.808e-10, 4.995e-10, 5.142e-10, 5.313e-10, 5.318e-10, | |||
| 2384 | 5.358e-10, 5.452e-10, 5.507e-10, 5.698e-10, 5.782e-10, | |||
| 2385 | 5.983e-10, 6.164e-10, 6.532e-10, 6.811e-10, 7.624e-10, | |||
| 2386 | 8.302e-10, 9.067e-10, 9.937e-10, 1.104e-09, 1.221e-09, | |||
| 2387 | 1.361e-09, 1.516e-09, 1.675e-09, 1.883e-09, 2.101e-09, | |||
| 2388 | 2.349e-09, 2.614e-09, 2.920e-09, 3.305e-09, 3.724e-09, | |||
| 2389 | 4.142e-09, 4.887e-09, 5.614e-09, 6.506e-09, 7.463e-09, | |||
| 2390 | 8.817e-09, 9.849e-09, 1.187e-08, 1.321e-08, 1.474e-08, | |||
| 2391 | 1.698e-08, 1.794e-08, 2.090e-08, 2.211e-08, 2.362e-08, | |||
| 2392 | 2.556e-08, 2.729e-08, 2.880e-08, 3.046e-08, 3.167e-08, | |||
| 2393 | 3.367e-08, 3.457e-08, 3.590e-08, 3.711e-08, 3.826e-08, | |||
| 2394 | 4.001e-08, 4.211e-08, 4.315e-08, 4.661e-08, 5.010e-08, | |||
| 2395 | 5.249e-08, 5.840e-08, 6.628e-08, 7.512e-08, 8.253e-08, | |||
| 2396 | 9.722e-08, 1.067e-07, 1.153e-07, 1.347e-07, 1.428e-07, | |||
| 2397 | 1.577e-07, 1.694e-07, 1.833e-07, 1.938e-07, 2.108e-07, | |||
| 2398 | 2.059e-07, 2.157e-07, 2.185e-07, 2.208e-07, 2.182e-07, | |||
| 2399 | 2.093e-07, 2.014e-07, 1.962e-07, 1.819e-07, 1.713e-07, | |||
| 2400 | 1.510e-07, 1.340e-07, 1.154e-07, 9.890e-08, 8.880e-08, | |||
| 2401 | 7.673e-08, 6.599e-08, 5.730e-08, 5.081e-08, 4.567e-08, | |||
| 2402 | 4.147e-08, 3.773e-08, 3.460e-08, 3.194e-08, 2.953e-08, | |||
| 2403 | 2.759e-08, 2.594e-08, 2.442e-08, 2.355e-08, 2.283e-08, | |||
| 2404 | 2.279e-08, 2.231e-08, 2.279e-08, 2.239e-08, 2.210e-08, | |||
| 2405 | 2.309e-08, 2.293e-08, 2.352e-08, 2.415e-08, 2.430e-08, | |||
| 2406 | 2.426e-08, 2.465e-08, 2.500e-08, 2.496e-08, 2.465e-08, | |||
| 2407 | 2.445e-08, 2.383e-08, 2.299e-08, 2.165e-08, 2.113e-08, | |||
| 2408 | 1.968e-08, 1.819e-08, 1.644e-08, 1.427e-08, 1.270e-08, | |||
| 2409 | 1.082e-08, 9.428e-09, 8.091e-09, 6.958e-09, 5.988e-09, | |||
| 2410 | 5.246e-09, 4.601e-09, 4.098e-09, 3.664e-09, 3.287e-09, | |||
| 2411 | 2.942e-09, 2.656e-09, 2.364e-09, 2.118e-09, 1.903e-09, | |||
| 2412 | 1.703e-09, 1.525e-09, 1.365e-09, 1.229e-09, 1.107e-09, | |||
| 2413 | 9.960e-10, 8.945e-10, 8.080e-10, 7.308e-10, 6.616e-10, | |||
| 2414 | 5.994e-10, 5.422e-10, 4.929e-10, 4.478e-10, 4.070e-10, | |||
| 2415 | 3.707e-10, 3.379e-10, 3.087e-10, 2.823e-10, 2.592e-10, | |||
| 2416 | 2.385e-10, 2.201e-10, 2.038e-10, 1.897e-10, 1.774e-10, | |||
| 2417 | 1.667e-10, 1.577e-10, 1.502e-10, 1.437e-10, 1.394e-10, | |||
| 2418 | 1.358e-10, 1.324e-10, 1.329e-10, 1.324e-10, 1.360e-10, | |||
| 2419 | 1.390e-10, 1.424e-10, 1.544e-10, 1.651e-10, 1.817e-10, | |||
| 2420 | 1.984e-10, 2.195e-10, 2.438e-10, 2.700e-10, 2.991e-10, | |||
| 2421 | 3.322e-10, 3.632e-10, 3.957e-10, 4.360e-10, 4.701e-10, | |||
| 2422 | 5.030e-10, 5.381e-10, 5.793e-10, 6.190e-10, 6.596e-10, | |||
| 2423 | 7.004e-10, 7.561e-10, 7.934e-10, 8.552e-10, 9.142e-10, | |||
| 2424 | 9.570e-10, 1.027e-09, 1.097e-09, 1.193e-09, 1.334e-09, | |||
| 2425 | 1.470e-09, 1.636e-09, 1.871e-09, 2.122e-09, 2.519e-09, | |||
| 2426 | 2.806e-09, 3.203e-09, 3.846e-09, 4.362e-09, 5.114e-09, | |||
| 2427 | 5.643e-09, 6.305e-09, 6.981e-09, 7.983e-09, 8.783e-09, | |||
| 2428 | 9.419e-09, 1.017e-08, 1.063e-08, 1.121e-08, 1.130e-08, | |||
| 2429 | 1.201e-08, 1.225e-08, 1.232e-08, 1.223e-08, 1.177e-08, | |||
| 2430 | 1.151e-08, 1.116e-08, 1.047e-08, 9.698e-09, 8.734e-09, | |||
| 2431 | 8.202e-09, 7.041e-09, 6.074e-09, 5.172e-09, 4.468e-09, | |||
| 2432 | 3.913e-09, 3.414e-09, 2.975e-09, 2.650e-09, 2.406e-09, | |||
| 2433 | 2.173e-09, 2.009e-09, 1.861e-09, 1.727e-09, 1.612e-09, | |||
| 2434 | 1.514e-09, 1.430e-09, 1.362e-09, 1.333e-09, 1.288e-09, | |||
| 2435 | 1.249e-09, 1.238e-09, 1.228e-09, 1.217e-09, 1.202e-09, | |||
| 2436 | 1.209e-09, 1.177e-09, 1.157e-09, 1.165e-09, 1.142e-09, | |||
| 2437 | 1.131e-09, 1.138e-09, 1.117e-09, 1.100e-09, 1.069e-09, | |||
| 2438 | 1.023e-09, 1.005e-09, 9.159e-10, 8.863e-10, 7.865e-10, | |||
| 2439 | 7.153e-10, 6.247e-10, 5.846e-10, 5.133e-10, 4.360e-10, | |||
| 2440 | 3.789e-10, 3.335e-10, 2.833e-10, 2.483e-10, 2.155e-10, | |||
| 2441 | 1.918e-10, 1.709e-10, 1.529e-10, 1.374e-10, 1.235e-10, | |||
| 2442 | 1.108e-10, 9.933e-11, 8.932e-11, 8.022e-11, 7.224e-11, | |||
| 2443 | 6.520e-11, 5.896e-11, 5.328e-11, 4.813e-11, 4.365e-11, | |||
| 2444 | 3.961e-11, 3.594e-11, 3.266e-11, 2.967e-11, 2.701e-11, | |||
| 2445 | 2.464e-11, 2.248e-11, 2.054e-11, 1.878e-11, 1.721e-11, | |||
| 2446 | 1.579e-11, 1.453e-11, 1.341e-11, 1.241e-11, 1.154e-11, | |||
| 2447 | 1.078e-11, 1.014e-11, 9.601e-12, 9.167e-12, 8.838e-12, | |||
| 2448 | 8.614e-12, 8.493e-12, 8.481e-12, 8.581e-12, 8.795e-12, | |||
| 2449 | 9.131e-12, 9.601e-12, 1.021e-11, 1.097e-11, 1.191e-11, | |||
| 2450 | 1.303e-11, 1.439e-11, 1.601e-11, 1.778e-11, 1.984e-11, | |||
| 2451 | 2.234e-11, 2.474e-11, 2.766e-11, 3.085e-11, 3.415e-11, | |||
| 2452 | 3.821e-11, 4.261e-11, 4.748e-11, 5.323e-11, 5.935e-11, | |||
| 2453 | 6.619e-11, 7.418e-11, 8.294e-11, 9.260e-11, 1.039e-10, | |||
| 2454 | 1.156e-10, 1.297e-10, 1.460e-10, 1.641e-10, 1.858e-10, | |||
| 2455 | 2.100e-10, 2.383e-10, 2.724e-10, 3.116e-10, 3.538e-10, | |||
| 2456 | 4.173e-10, 4.727e-10, 5.503e-10, 6.337e-10, 7.320e-10, | |||
| 2457 | 8.298e-10, 9.328e-10, 1.059e-09, 1.176e-09, 1.328e-09, | |||
| 2458 | 1.445e-09, 1.593e-09, 1.770e-09, 1.954e-09, 2.175e-09, | |||
| 2459 | 2.405e-09, 2.622e-09, 2.906e-09, 3.294e-09, 3.713e-09, | |||
| 2460 | 3.980e-09, 4.384e-09, 4.987e-09, 5.311e-09, 5.874e-09, | |||
| 2461 | 6.337e-09, 7.027e-09, 7.390e-09, 7.769e-09, 8.374e-09, | |||
| 2462 | 8.605e-09, 9.165e-09, 9.415e-09, 9.511e-09, 9.704e-09, | |||
| 2463 | 9.588e-09, 9.450e-09, 9.086e-09, 8.798e-09, 8.469e-09, | |||
| 2464 | 7.697e-09, 7.168e-09, 6.255e-09, 5.772e-09, 4.970e-09, | |||
| 2465 | 4.271e-09, 3.653e-09, 3.154e-09, 2.742e-09, 2.435e-09, | |||
| 2466 | 2.166e-09, 1.936e-09, 1.731e-09, 1.556e-09, 1.399e-09, | |||
| 2467 | 1.272e-09, 1.157e-09, 1.066e-09, 9.844e-10, 9.258e-10, | |||
| 2468 | 8.787e-10, 8.421e-10, 8.083e-10, 8.046e-10, 8.067e-10, | |||
| 2469 | 8.181e-10, 8.325e-10, 8.517e-10, 9.151e-10, 9.351e-10, | |||
| 2470 | 9.677e-10, 1.071e-09, 1.126e-09, 1.219e-09, 1.297e-09, | |||
| 2471 | 1.408e-09, 1.476e-09, 1.517e-09, 1.600e-09, 1.649e-09, | |||
| 2472 | 1.678e-09, 1.746e-09, 1.742e-09, 1.728e-09, 1.699e-09, | |||
| 2473 | 1.655e-09, 1.561e-09, 1.480e-09, 1.451e-09, 1.411e-09, | |||
| 2474 | 1.171e-09, 1.106e-09, 9.714e-10, 8.523e-10, 7.346e-10, | |||
| 2475 | 6.241e-10, 5.371e-10, 4.704e-10, 4.144e-10, 3.683e-10, | |||
| 2476 | 3.292e-10, 2.942e-10, 2.620e-10, 2.341e-10, 2.104e-10, | |||
| 2477 | 1.884e-10, 1.700e-10, 1.546e-10, 1.394e-10, 1.265e-10, | |||
| 2478 | 1.140e-10, 1.019e-10, 9.279e-11, 8.283e-11, 7.458e-11, | |||
| 2479 | 6.668e-11, 5.976e-11, 5.330e-11, 4.794e-11, 4.289e-11, | |||
| 2480 | 3.841e-11, 3.467e-11, 3.130e-11, 2.832e-11, 2.582e-11, | |||
| 2481 | 2.356e-11, 2.152e-11, 1.970e-11, 1.808e-11, 1.664e-11, | |||
| 2482 | 1.539e-11, 1.434e-11, 1.344e-11, 1.269e-11, 1.209e-11, | |||
| 2483 | 1.162e-11, 1.129e-11, 1.108e-11, 1.099e-11, 1.103e-11, | |||
| 2484 | 1.119e-11, 1.148e-11, 1.193e-11, 1.252e-11, 1.329e-11, | |||
| 2485 | 1.421e-11, 1.555e-11, 1.685e-11, 1.839e-11, 2.054e-11, | |||
| 2486 | 2.317e-11, 2.571e-11, 2.839e-11, 3.171e-11, 3.490e-11, | |||
| 2487 | 3.886e-11, 4.287e-11, 4.645e-11, 5.047e-11, 5.592e-11, | |||
| 2488 | 6.109e-11, 6.628e-11, 7.381e-11, 8.088e-11, 8.966e-11, | |||
| 2489 | 1.045e-10, 1.120e-10, 1.287e-10, 1.486e-10, 1.662e-10, | |||
| 2490 | 1.866e-10, 2.133e-10, 2.524e-10, 2.776e-10, 3.204e-10, | |||
| 2491 | 3.559e-10, 4.028e-10, 4.448e-10, 4.882e-10, 5.244e-10, | |||
| 2492 | 5.605e-10, 6.018e-10, 6.328e-10, 6.579e-10, 6.541e-10, | |||
| 2493 | 7.024e-10, 7.074e-10, 7.068e-10, 7.009e-10, 6.698e-10, | |||
| 2494 | 6.545e-10, 6.209e-10, 5.834e-10, 5.412e-10, 5.001e-10, | |||
| 2495 | 4.231e-10, 3.727e-10, 3.211e-10, 2.833e-10, 2.447e-10, | |||
| 2496 | 2.097e-10, 1.843e-10, 1.639e-10, 1.449e-10, 1.270e-10, | |||
| 2497 | 1.161e-10, 1.033e-10, 9.282e-11, 8.407e-11, 7.639e-11, | |||
| 2498 | 7.023e-11, 6.474e-11, 6.142e-11, 5.760e-11, 5.568e-11, | |||
| 2499 | 5.472e-11, 5.390e-11, 5.455e-11, 5.540e-11, 5.587e-11, | |||
| 2500 | 6.230e-11, 6.490e-11, 6.868e-11, 7.382e-11, 8.022e-11, | |||
| 2501 | 8.372e-11, 9.243e-11, 1.004e-10, 1.062e-10, 1.130e-10, | |||
| 2502 | 1.176e-10, 1.244e-10, 1.279e-10, 1.298e-10, 1.302e-10, | |||
| 2503 | 1.312e-10, 1.295e-10, 1.244e-10, 1.211e-10, 1.167e-10, | |||
| 2504 | 1.098e-10, 9.927e-11, 8.854e-11, 8.011e-11, 7.182e-11, | |||
| 2505 | 5.923e-11, 5.212e-11, 4.453e-11, 3.832e-11, 3.371e-11, | |||
| 2506 | 2.987e-11, 2.651e-11, 2.354e-11, 2.093e-11, 1.863e-11, | |||
| 2507 | 1.662e-11, 1.486e-11, 1.331e-11, 1.193e-11, 1.071e-11, | |||
| 2508 | 9.628e-12, 8.660e-12, 7.801e-12, 7.031e-12, 6.347e-12, | |||
| 2509 | 5.733e-12, 5.182e-12, 4.695e-12, 4.260e-12, 3.874e-12, | |||
| 2510 | 3.533e-12, 3.235e-12, 2.979e-12, 2.760e-12, 2.579e-12, | |||
| 2511 | 2.432e-12, 2.321e-12, 2.246e-12, 2.205e-12, 2.196e-12, | |||
| 2512 | 2.223e-12, 2.288e-12, 2.387e-12, 2.525e-12, 2.704e-12, | |||
| 2513 | 2.925e-12, 3.191e-12, 3.508e-12, 3.876e-12, 4.303e-12, | |||
| 2514 | 4.793e-12, 5.347e-12, 5.978e-12, 6.682e-12, 7.467e-12, | |||
| 2515 | 8.340e-12, 9.293e-12, 1.035e-11, 1.152e-11, 1.285e-11, | |||
| 2516 | 1.428e-11, 1.586e-11, 1.764e-11, 1.972e-11, 2.214e-11, | |||
| 2517 | 2.478e-11, 2.776e-11, 3.151e-11, 3.591e-11, 4.103e-11, | |||
| 2518 | 4.660e-11, 5.395e-11, 6.306e-11, 7.172e-11, 8.358e-11, | |||
| 2519 | 9.670e-11, 1.110e-10, 1.325e-10, 1.494e-10, 1.736e-10, | |||
| 2520 | 2.007e-10, 2.296e-10, 2.608e-10, 3.004e-10, 3.361e-10, | |||
| 2521 | 3.727e-10, 4.373e-10, 4.838e-10, 5.483e-10, 6.006e-10, | |||
| 2522 | 6.535e-10, 6.899e-10, 7.687e-10, 8.444e-10, 8.798e-10, | |||
| 2523 | 9.135e-10, 9.532e-10, 9.757e-10, 9.968e-10, 1.006e-09, | |||
| 2524 | 9.949e-10, 9.789e-10, 9.564e-10, 9.215e-10, 8.510e-10, | |||
| 2525 | 8.394e-10, 7.707e-10, 7.152e-10, 6.274e-10, 5.598e-10, | |||
| 2526 | 5.028e-10, 4.300e-10, 3.710e-10, 3.245e-10, 2.809e-10, | |||
| 2527 | 2.461e-10, 2.154e-10, 1.910e-10, 1.685e-10, 1.487e-10, | |||
| 2528 | 1.313e-10, 1.163e-10, 1.031e-10, 9.172e-11, 8.221e-11, | |||
| 2529 | 7.382e-11, 6.693e-11, 6.079e-11, 5.581e-11, 5.167e-11, | |||
| 2530 | 4.811e-11, 4.506e-11, 4.255e-11, 4.083e-11, 3.949e-11, | |||
| 2531 | 3.881e-11, 3.861e-11, 3.858e-11, 3.951e-11, 4.045e-11, | |||
| 2532 | 4.240e-11, 4.487e-11, 4.806e-11, 5.133e-11, 5.518e-11, | |||
| 2533 | 5.919e-11, 6.533e-11, 7.031e-11, 7.762e-11, 8.305e-11, | |||
| 2534 | 9.252e-11, 9.727e-11, 1.045e-10, 1.117e-10, 1.200e-10, | |||
| 2535 | 1.275e-10, 1.341e-10, 1.362e-10, 1.438e-10, 1.450e-10, | |||
| 2536 | 1.455e-10, 1.455e-10, 1.434e-10, 1.381e-10, 1.301e-10, | |||
| 2537 | 1.276e-10, 1.163e-10, 1.089e-10, 9.911e-11, 8.943e-11, | |||
| 2538 | 7.618e-11, 6.424e-11, 5.717e-11, 4.866e-11, 4.257e-11, | |||
| 2539 | 3.773e-11, 3.331e-11, 2.958e-11, 2.629e-11, 2.316e-11, | |||
| 2540 | 2.073e-11, 1.841e-11, 1.635e-11, 1.464e-11, 1.310e-11, | |||
| 2541 | 1.160e-11, 1.047e-11, 9.408e-12, 8.414e-12, 7.521e-12, | |||
| 2542 | 6.705e-12, 5.993e-12, 5.371e-12, 4.815e-12, 4.338e-12, | |||
| 2543 | 3.921e-12, 3.567e-12, 3.265e-12, 3.010e-12, 2.795e-12, | |||
| 2544 | 2.613e-12, 2.464e-12, 2.346e-12, 2.256e-12, 2.195e-12, | |||
| 2545 | 2.165e-12, 2.166e-12, 2.198e-12, 2.262e-12, 2.364e-12, | |||
| 2546 | 2.502e-12, 2.682e-12, 2.908e-12, 3.187e-12, 3.533e-12, | |||
| 2547 | 3.946e-12, 4.418e-12, 5.013e-12, 5.708e-12, 6.379e-12, | |||
| 2548 | 7.430e-12, 8.390e-12, 9.510e-12, 1.078e-11, 1.259e-11, | |||
| 2549 | 1.438e-11, 1.630e-11, 1.814e-11, 2.055e-11, 2.348e-11, | |||
| 2550 | 2.664e-11, 2.956e-11, 3.300e-11, 3.677e-11, 4.032e-11, | |||
| 2551 | 4.494e-11, 4.951e-11, 5.452e-11, 6.014e-11, 6.500e-11, | |||
| 2552 | 6.915e-11, 7.450e-11, 7.971e-11, 8.468e-11, 8.726e-11, | |||
| 2553 | 8.995e-11, 9.182e-11, 9.509e-11, 9.333e-11, 9.386e-11, | |||
| 2554 | 9.457e-11, 9.210e-11, 9.019e-11, 8.680e-11, 8.298e-11, | |||
| 2555 | 7.947e-11, 7.460e-11, 7.082e-11, 6.132e-11, 5.855e-11, | |||
| 2556 | 5.073e-11, 4.464e-11, 3.825e-11, 3.375e-11, 2.911e-11, | |||
| 2557 | 2.535e-11, 2.160e-11, 1.907e-11, 1.665e-11, 1.463e-11, | |||
| 2558 | 1.291e-11, 1.133e-11, 9.997e-12, 8.836e-12, 7.839e-12, | |||
| 2559 | 6.943e-12, 6.254e-12, 5.600e-12, 5.029e-12, 4.529e-12, | |||
| 2560 | 4.102e-12, 3.737e-12, 3.428e-12, 3.169e-12, 2.959e-12, | |||
| 2561 | 2.798e-12, 2.675e-12, 2.582e-12, 2.644e-12, 2.557e-12, | |||
| 2562 | 2.614e-12, 2.717e-12, 2.874e-12, 3.056e-12, 3.187e-12, | |||
| 2563 | 3.631e-12, 3.979e-12, 4.248e-12, 4.817e-12, 5.266e-12, | |||
| 2564 | 5.836e-12, 6.365e-12, 6.807e-12, 7.470e-12, 7.951e-12, | |||
| 2565 | 8.636e-12, 8.972e-12, 9.314e-12, 9.445e-12, 1.003e-11, | |||
| 2566 | 1.013e-11, 9.937e-12, 9.729e-12, 9.064e-12, 9.119e-12, | |||
| 2567 | 9.124e-12, 8.704e-12, 8.078e-12, 7.470e-12, 6.329e-12, | |||
| 2568 | 5.674e-12, 4.808e-12, 4.119e-12, 3.554e-12, 3.103e-12, | |||
| 2569 | 2.731e-12, 2.415e-12, 2.150e-12, 1.926e-12, 1.737e-12, | |||
| 2570 | 1.578e-12, 1.447e-12, 1.340e-12, 1.255e-12, 1.191e-12, | |||
| 2571 | 1.146e-12, 1.121e-12, 1.114e-12, 1.126e-12, 1.156e-12, | |||
| 2572 | 1.207e-12, 1.278e-12, 1.372e-12, 1.490e-12, 1.633e-12, | |||
| 2573 | 1.805e-12, 2.010e-12, 2.249e-12, 2.528e-12, 2.852e-12, | |||
| 2574 | 3.228e-12, 3.658e-12, 4.153e-12, 4.728e-12, 5.394e-12, | |||
| 2575 | 6.176e-12, 7.126e-12, 8.188e-12, 9.328e-12, 1.103e-11, | |||
| 2576 | 1.276e-11, 1.417e-11, 1.615e-11, 1.840e-11, 2.155e-11, | |||
| 2577 | 2.429e-11, 2.826e-11, 3.222e-11, 3.664e-11, 4.140e-11, | |||
| 2578 | 4.906e-11, 5.536e-11, 6.327e-11, 7.088e-11, 8.316e-11, | |||
| 2579 | 9.242e-11, 1.070e-10, 1.223e-10, 1.341e-10, 1.553e-10, | |||
| 2580 | 1.703e-10, 1.900e-10, 2.022e-10, 2.233e-10, 2.345e-10, | |||
| 2581 | 2.438e-10, 2.546e-10, 2.599e-10, 2.661e-10, 2.703e-10, | |||
| 2582 | 2.686e-10, 2.662e-10, 2.560e-10, 2.552e-10, 2.378e-10, | |||
| 2583 | 2.252e-10, 2.146e-10, 1.885e-10, 1.668e-10, 1.441e-10, | |||
| 2584 | 1.295e-10, 1.119e-10, 9.893e-11, 8.687e-11, 7.678e-11, | |||
| 2585 | 6.685e-11, 5.879e-11, 5.127e-11, 4.505e-11, 3.997e-11, | |||
| 2586 | 3.511e-11}; | |||
| 2587 | ||||
| 2588 | ||||
| 2589 | // H2O foreign continuum parameters at all temperatures | |||
| 2590 | // date of last update: 11/18/02 | |||
| 2591 | // units of (CM**3/MOL)*1.E-20 | |||
| 2592 | const Numeric FH2O_ckd_mt_100_v1 = -20.0; | |||
| 2593 | const Numeric FH2O_ckd_mt_100_v2 = 20000.0; | |||
| 2594 | const Numeric FH2O_ckd_mt_100_dv = 10.0; | |||
| 2595 | const int FH2O_ckd_mt_100_npt = 2003; | |||
| 2596 | const double FH2O_ckd_mt_100[FH2O_ckd_mt_100_npt+addF77fields] = { | |||
| 2597 | 0.000e0, 1.205e-02, 1.126e-02, | |||
| 2598 | 1.095e-02, 1.126e-02, 1.205e-02, 1.322e-02, 1.430e-02, | |||
| 2599 | 1.506e-02, 1.548e-02, 1.534e-02, 1.486e-02, 1.373e-02, | |||
| 2600 | 1.262e-02, 1.134e-02, 1.001e-02, 8.702e-03, 7.475e-03, | |||
| 2601 | 6.481e-03, 5.480e-03, 4.600e-03, 3.833e-03, 3.110e-03, | |||
| 2602 | 2.543e-03, 2.049e-03, 1.680e-03, 1.374e-03, 1.046e-03, | |||
| 2603 | 8.193e-04, 6.267e-04, 4.968e-04, 3.924e-04, 2.983e-04, | |||
| 2604 | 2.477e-04, 1.997e-04, 1.596e-04, 1.331e-04, 1.061e-04, | |||
| 2605 | 8.942e-05, 7.168e-05, 5.887e-05, 4.848e-05, 3.817e-05, | |||
| 2606 | 3.170e-05, 2.579e-05, 2.162e-05, 1.768e-05, 1.490e-05, | |||
| 2607 | 1.231e-05, 1.013e-05, 8.555e-06, 7.328e-06, 6.148e-06, | |||
| 2608 | 5.207e-06, 4.387e-06, 3.741e-06, 3.220e-06, 2.753e-06, | |||
| 2609 | 2.346e-06, 1.985e-06, 1.716e-06, 1.475e-06, 1.286e-06, | |||
| 2610 | 1.122e-06, 9.661e-07, 8.284e-07, 7.057e-07, 6.119e-07, | |||
| 2611 | 5.290e-07, 4.571e-07, 3.948e-07, 3.432e-07, 2.983e-07, | |||
| 2612 | 2.589e-07, 2.265e-07, 1.976e-07, 1.704e-07, 1.456e-07, | |||
| 2613 | 1.260e-07, 1.101e-07, 9.648e-08, 8.415e-08, 7.340e-08, | |||
| 2614 | 6.441e-08, 5.643e-08, 4.940e-08, 4.276e-08, 3.703e-08, | |||
| 2615 | 3.227e-08, 2.825e-08, 2.478e-08, 2.174e-08, 1.898e-08, | |||
| 2616 | 1.664e-08, 1.458e-08, 1.278e-08, 1.126e-08, 9.891e-09, | |||
| 2617 | 8.709e-09, 7.652e-09, 6.759e-09, 5.975e-09, 5.310e-09, | |||
| 2618 | 4.728e-09, 4.214e-09, 3.792e-09, 3.463e-09, 3.226e-09, | |||
| 2619 | 2.992e-09, 2.813e-09, 2.749e-09, 2.809e-09, 2.913e-09, | |||
| 2620 | 3.037e-09, 3.413e-09, 3.738e-09, 4.189e-09, 4.808e-09, | |||
| 2621 | 5.978e-09, 7.088e-09, 8.071e-09, 9.610e-09, 1.210e-08, | |||
| 2622 | 1.500e-08, 1.764e-08, 2.221e-08, 2.898e-08, 3.948e-08, | |||
| 2623 | 5.068e-08, 6.227e-08, 7.898e-08, 1.033e-07, 1.437e-07, | |||
| 2624 | 1.889e-07, 2.589e-07, 3.590e-07, 4.971e-07, 7.156e-07, | |||
| 2625 | 9.983e-07, 1.381e-06, 1.929e-06, 2.591e-06, 3.453e-06, | |||
| 2626 | 4.570e-06, 5.930e-06, 7.552e-06, 9.556e-06, 1.183e-05, | |||
| 2627 | 1.425e-05, 1.681e-05, 1.978e-05, 2.335e-05, 2.668e-05, | |||
| 2628 | 3.022e-05, 3.371e-05, 3.715e-05, 3.967e-05, 4.060e-05, | |||
| 2629 | 4.010e-05, 3.809e-05, 3.491e-05, 3.155e-05, 2.848e-05, | |||
| 2630 | 2.678e-05, 2.660e-05, 2.811e-05, 3.071e-05, 3.294e-05, | |||
| 2631 | 3.459e-05, 3.569e-05, 3.560e-05, 3.434e-05, 3.186e-05, | |||
| 2632 | 2.916e-05, 2.622e-05, 2.275e-05, 1.918e-05, 1.620e-05, | |||
| 2633 | 1.373e-05, 1.182e-05, 1.006e-05, 8.556e-06, 7.260e-06, | |||
| 2634 | 6.107e-06, 5.034e-06, 4.211e-06, 3.426e-06, 2.865e-06, | |||
| 2635 | 2.446e-06, 1.998e-06, 1.628e-06, 1.242e-06, 1.005e-06, | |||
| 2636 | 7.853e-07, 6.210e-07, 5.071e-07, 4.156e-07, 3.548e-07, | |||
| 2637 | 2.825e-07, 2.261e-07, 1.916e-07, 1.510e-07, 1.279e-07, | |||
| 2638 | 1.059e-07, 9.140e-08, 7.707e-08, 6.170e-08, 5.311e-08, | |||
| 2639 | 4.263e-08, 3.518e-08, 2.961e-08, 2.457e-08, 2.119e-08, | |||
| 2640 | 1.712e-08, 1.439e-08, 1.201e-08, 1.003e-08, 8.564e-09, | |||
| 2641 | 7.199e-09, 6.184e-09, 5.206e-09, 4.376e-09, 3.708e-09, | |||
| 2642 | 3.157e-09, 2.725e-09, 2.361e-09, 2.074e-09, 1.797e-09, | |||
| 2643 | 1.562e-09, 1.364e-09, 1.196e-09, 1.042e-09, 8.862e-10, | |||
| 2644 | 7.648e-10, 6.544e-10, 5.609e-10, 4.791e-10, 4.108e-10, | |||
| 2645 | 3.531e-10, 3.038e-10, 2.618e-10, 2.268e-10, 1.969e-10, | |||
| 2646 | 1.715e-10, 1.496e-10, 1.308e-10, 1.147e-10, 1.008e-10, | |||
| 2647 | 8.894e-11, 7.885e-11, 7.031e-11, 6.355e-11, 5.854e-11, | |||
| 2648 | 5.534e-11, 5.466e-11, 5.725e-11, 6.447e-11, 7.943e-11, | |||
| 2649 | 1.038e-10, 1.437e-10, 2.040e-10, 2.901e-10, 4.051e-10, | |||
| 2650 | 5.556e-10, 7.314e-10, 9.291e-10, 1.134e-09, 1.321e-09, | |||
| 2651 | 1.482e-09, 1.596e-09, 1.669e-09, 1.715e-09, 1.762e-09, | |||
| 2652 | 1.817e-09, 1.828e-09, 1.848e-09, 1.873e-09, 1.902e-09, | |||
| 2653 | 1.894e-09, 1.864e-09, 1.841e-09, 1.797e-09, 1.704e-09, | |||
| 2654 | 1.559e-09, 1.382e-09, 1.187e-09, 1.001e-09, 8.468e-10, | |||
| 2655 | 7.265e-10, 6.521e-10, 6.381e-10, 6.660e-10, 7.637e-10, | |||
| 2656 | 9.705e-10, 1.368e-09, 1.856e-09, 2.656e-09, 3.954e-09, | |||
| 2657 | 5.960e-09, 8.720e-09, 1.247e-08, 1.781e-08, 2.491e-08, | |||
| 2658 | 3.311e-08, 4.272e-08, 5.205e-08, 6.268e-08, 7.337e-08, | |||
| 2659 | 8.277e-08, 9.185e-08, 1.004e-07, 1.091e-07, 1.159e-07, | |||
| 2660 | 1.188e-07, 1.175e-07, 1.124e-07, 1.033e-07, 9.381e-08, | |||
| 2661 | 8.501e-08, 7.956e-08, 7.894e-08, 8.331e-08, 9.102e-08, | |||
| 2662 | 9.836e-08, 1.035e-07, 1.064e-07, 1.060e-07, 1.032e-07, | |||
| 2663 | 9.808e-08, 9.139e-08, 8.442e-08, 7.641e-08, 6.881e-08, | |||
| 2664 | 6.161e-08, 5.404e-08, 4.804e-08, 4.446e-08, 4.328e-08, | |||
| 2665 | 4.259e-08, 4.421e-08, 4.673e-08, 4.985e-08, 5.335e-08, | |||
| 2666 | 5.796e-08, 6.542e-08, 7.714e-08, 8.827e-08, 1.040e-07, | |||
| 2667 | 1.238e-07, 1.499e-07, 1.829e-07, 2.222e-07, 2.689e-07, | |||
| 2668 | 3.303e-07, 3.981e-07, 4.840e-07, 5.910e-07, 7.363e-07, | |||
| 2669 | 9.087e-07, 1.139e-06, 1.455e-06, 1.866e-06, 2.440e-06, | |||
| 2670 | 3.115e-06, 3.941e-06, 4.891e-06, 5.992e-06, 7.111e-06, | |||
| 2671 | 8.296e-06, 9.210e-06, 9.987e-06, 1.044e-05, 1.073e-05, | |||
| 2672 | 1.092e-05, 1.106e-05, 1.138e-05, 1.171e-05, 1.186e-05, | |||
| 2673 | 1.186e-05, 1.179e-05, 1.166e-05, 1.151e-05, 1.160e-05, | |||
| 2674 | 1.197e-05, 1.241e-05, 1.268e-05, 1.260e-05, 1.184e-05, | |||
| 2675 | 1.063e-05, 9.204e-06, 7.584e-06, 6.053e-06, 4.482e-06, | |||
| 2676 | 3.252e-06, 2.337e-06, 1.662e-06, 1.180e-06, 8.150e-07, | |||
| 2677 | 5.950e-07, 4.354e-07, 3.302e-07, 2.494e-07, 1.930e-07, | |||
| 2678 | 1.545e-07, 1.250e-07, 1.039e-07, 8.602e-08, 7.127e-08, | |||
| 2679 | 5.897e-08, 4.838e-08, 4.018e-08, 3.280e-08, 2.720e-08, | |||
| 2680 | 2.307e-08, 1.972e-08, 1.654e-08, 1.421e-08, 1.174e-08, | |||
| 2681 | 1.004e-08, 8.739e-09, 7.358e-09, 6.242e-09, 5.303e-09, | |||
| 2682 | 4.567e-09, 3.940e-09, 3.375e-09, 2.864e-09, 2.422e-09, | |||
| 2683 | 2.057e-09, 1.750e-09, 1.505e-09, 1.294e-09, 1.101e-09, | |||
| 2684 | 9.401e-10, 8.018e-10, 6.903e-10, 5.965e-10, 5.087e-10, | |||
| 2685 | 4.364e-10, 3.759e-10, 3.247e-10, 2.809e-10, 2.438e-10, | |||
| 2686 | 2.123e-10, 1.853e-10, 1.622e-10, 1.426e-10, 1.260e-10, | |||
| 2687 | 1.125e-10, 1.022e-10, 9.582e-11, 9.388e-11, 9.801e-11, | |||
| 2688 | 1.080e-10, 1.276e-10, 1.551e-10, 1.903e-10, 2.291e-10, | |||
| 2689 | 2.724e-10, 3.117e-10, 3.400e-10, 3.562e-10, 3.625e-10, | |||
| 2690 | 3.619e-10, 3.429e-10, 3.221e-10, 2.943e-10, 2.645e-10, | |||
| 2691 | 2.338e-10, 2.062e-10, 1.901e-10, 1.814e-10, 1.827e-10, | |||
| 2692 | 1.906e-10, 1.984e-10, 2.040e-10, 2.068e-10, 2.075e-10, | |||
| 2693 | 2.018e-10, 1.959e-10, 1.897e-10, 1.852e-10, 1.791e-10, | |||
| 2694 | 1.696e-10, 1.634e-10, 1.598e-10, 1.561e-10, 1.518e-10, | |||
| 2695 | 1.443e-10, 1.377e-10, 1.346e-10, 1.342e-10, 1.375e-10, | |||
| 2696 | 1.525e-10, 1.767e-10, 2.108e-10, 2.524e-10, 2.981e-10, | |||
| 2697 | 3.477e-10, 4.262e-10, 5.326e-10, 6.646e-10, 8.321e-10, | |||
| 2698 | 1.069e-09, 1.386e-09, 1.743e-09, 2.216e-09, 2.808e-09, | |||
| 2699 | 3.585e-09, 4.552e-09, 5.907e-09, 7.611e-09, 9.774e-09, | |||
| 2700 | 1.255e-08, 1.666e-08, 2.279e-08, 3.221e-08, 4.531e-08, | |||
| 2701 | 6.400e-08, 9.187e-08, 1.295e-07, 1.825e-07, 2.431e-07, | |||
| 2702 | 3.181e-07, 4.009e-07, 4.941e-07, 5.880e-07, 6.623e-07, | |||
| 2703 | 7.155e-07, 7.451e-07, 7.594e-07, 7.541e-07, 7.467e-07, | |||
| 2704 | 7.527e-07, 7.935e-07, 8.461e-07, 8.954e-07, 9.364e-07, | |||
| 2705 | 9.843e-07, 1.024e-06, 1.050e-06, 1.059e-06, 1.074e-06, | |||
| 2706 | 1.072e-06, 1.043e-06, 9.789e-07, 8.803e-07, 7.662e-07, | |||
| 2707 | 6.378e-07, 5.133e-07, 3.958e-07, 2.914e-07, 2.144e-07, | |||
| 2708 | 1.570e-07, 1.140e-07, 8.470e-08, 6.200e-08, 4.657e-08, | |||
| 2709 | 3.559e-08, 2.813e-08, 2.222e-08, 1.769e-08, 1.391e-08, | |||
| 2710 | 1.125e-08, 9.186e-09, 7.704e-09, 6.447e-09, 5.381e-09, | |||
| 2711 | 4.442e-09, 3.669e-09, 3.057e-09, 2.564e-09, 2.153e-09, | |||
| 2712 | 1.784e-09, 1.499e-09, 1.281e-09, 1.082e-09, 9.304e-10, | |||
| 2713 | 8.169e-10, 6.856e-10, 5.866e-10, 5.043e-10, 4.336e-10, | |||
| 2714 | 3.731e-10, 3.175e-10, 2.745e-10, 2.374e-10, 2.007e-10, | |||
| 2715 | 1.737e-10, 1.508e-10, 1.302e-10, 1.130e-10, 9.672e-11, | |||
| 2716 | 8.375e-11, 7.265e-11, 6.244e-11, 5.343e-11, 4.654e-11, | |||
| 2717 | 3.975e-11, 3.488e-11, 3.097e-11, 2.834e-11, 2.649e-11, | |||
| 2718 | 2.519e-11, 2.462e-11, 2.443e-11, 2.440e-11, 2.398e-11, | |||
| 2719 | 2.306e-11, 2.183e-11, 2.021e-11, 1.821e-11, 1.599e-11, | |||
| 2720 | 1.403e-11, 1.196e-11, 1.023e-11, 8.728e-12, 7.606e-12, | |||
| 2721 | 6.941e-12, 6.545e-12, 6.484e-12, 6.600e-12, 6.718e-12, | |||
| 2722 | 6.785e-12, 6.746e-12, 6.724e-12, 6.764e-12, 6.995e-12, | |||
| 2723 | 7.144e-12, 7.320e-12, 7.330e-12, 7.208e-12, 6.789e-12, | |||
| 2724 | 6.090e-12, 5.337e-12, 4.620e-12, 4.037e-12, 3.574e-12, | |||
| 2725 | 3.311e-12, 3.346e-12, 3.566e-12, 3.836e-12, 4.076e-12, | |||
| 2726 | 4.351e-12, 4.691e-12, 5.114e-12, 5.427e-12, 6.167e-12, | |||
| 2727 | 7.436e-12, 8.842e-12, 1.038e-11, 1.249e-11, 1.540e-11, | |||
| 2728 | 1.915e-11, 2.480e-11, 3.256e-11, 4.339e-11, 5.611e-11, | |||
| 2729 | 7.519e-11, 1.037e-10, 1.409e-10, 1.883e-10, 2.503e-10, | |||
| 2730 | 3.380e-10, 4.468e-10, 5.801e-10, 7.335e-10, 8.980e-10, | |||
| 2731 | 1.110e-09, 1.363e-09, 1.677e-09, 2.104e-09, 2.681e-09, | |||
| 2732 | 3.531e-09, 4.621e-09, 6.106e-09, 8.154e-09, 1.046e-08, | |||
| 2733 | 1.312e-08, 1.607e-08, 1.948e-08, 2.266e-08, 2.495e-08, | |||
| 2734 | 2.655e-08, 2.739e-08, 2.739e-08, 2.662e-08, 2.589e-08, | |||
| 2735 | 2.590e-08, 2.664e-08, 2.833e-08, 3.023e-08, 3.305e-08, | |||
| 2736 | 3.558e-08, 3.793e-08, 3.961e-08, 4.056e-08, 4.102e-08, | |||
| 2737 | 4.025e-08, 3.917e-08, 3.706e-08, 3.493e-08, 3.249e-08, | |||
| 2738 | 3.096e-08, 3.011e-08, 3.111e-08, 3.395e-08, 3.958e-08, | |||
| 2739 | 4.875e-08, 6.066e-08, 7.915e-08, 1.011e-07, 1.300e-07, | |||
| 2740 | 1.622e-07, 2.003e-07, 2.448e-07, 2.863e-07, 3.317e-07, | |||
| 2741 | 3.655e-07, 3.960e-07, 4.098e-07, 4.168e-07, 4.198e-07, | |||
| 2742 | 4.207e-07, 4.289e-07, 4.384e-07, 4.471e-07, 4.524e-07, | |||
| 2743 | 4.574e-07, 4.633e-07, 4.785e-07, 5.028e-07, 5.371e-07, | |||
| 2744 | 5.727e-07, 5.955e-07, 5.998e-07, 5.669e-07, 5.082e-07, | |||
| 2745 | 4.397e-07, 3.596e-07, 2.814e-07, 2.074e-07, 1.486e-07, | |||
| 2746 | 1.057e-07, 7.250e-08, 4.946e-08, 3.430e-08, 2.447e-08, | |||
| 2747 | 1.793e-08, 1.375e-08, 1.096e-08, 9.091e-09, 7.709e-09, | |||
| 2748 | 6.631e-09, 5.714e-09, 4.886e-09, 4.205e-09, 3.575e-09, | |||
| 2749 | 3.070e-09, 2.631e-09, 2.284e-09, 2.002e-09, 1.745e-09, | |||
| 2750 | 1.509e-09, 1.284e-09, 1.084e-09, 9.163e-10, 7.663e-10, | |||
| 2751 | 6.346e-10, 5.283e-10, 4.354e-10, 3.590e-10, 2.982e-10, | |||
| 2752 | 2.455e-10, 2.033e-10, 1.696e-10, 1.432e-10, 1.211e-10, | |||
| 2753 | 1.020e-10, 8.702e-11, 7.380e-11, 6.293e-11, 5.343e-11, | |||
| 2754 | 4.532e-11, 3.907e-11, 3.365e-11, 2.945e-11, 2.558e-11, | |||
| 2755 | 2.192e-11, 1.895e-11, 1.636e-11, 1.420e-11, 1.228e-11, | |||
| 2756 | 1.063e-11, 9.348e-12, 8.200e-12, 7.231e-12, 6.430e-12, | |||
| 2757 | 5.702e-12, 5.052e-12, 4.469e-12, 4.000e-12, 3.679e-12, | |||
| 2758 | 3.387e-12, 3.197e-12, 3.158e-12, 3.327e-12, 3.675e-12, | |||
| 2759 | 4.292e-12, 5.437e-12, 7.197e-12, 1.008e-11, 1.437e-11, | |||
| 2760 | 2.035e-11, 2.905e-11, 4.062e-11, 5.528e-11, 7.177e-11, | |||
| 2761 | 9.064e-11, 1.109e-10, 1.297e-10, 1.473e-10, 1.652e-10, | |||
| 2762 | 1.851e-10, 2.079e-10, 2.313e-10, 2.619e-10, 2.958e-10, | |||
| 2763 | 3.352e-10, 3.796e-10, 4.295e-10, 4.923e-10, 5.490e-10, | |||
| 2764 | 5.998e-10, 6.388e-10, 6.645e-10, 6.712e-10, 6.549e-10, | |||
| 2765 | 6.380e-10, 6.255e-10, 6.253e-10, 6.459e-10, 6.977e-10, | |||
| 2766 | 7.590e-10, 8.242e-10, 8.920e-10, 9.403e-10, 9.701e-10, | |||
| 2767 | 9.483e-10, 9.135e-10, 8.617e-10, 7.921e-10, 7.168e-10, | |||
| 2768 | 6.382e-10, 5.677e-10, 5.045e-10, 4.572e-10, 4.312e-10, | |||
| 2769 | 4.145e-10, 4.192e-10, 4.541e-10, 5.368e-10, 6.771e-10, | |||
| 2770 | 8.962e-10, 1.210e-09, 1.659e-09, 2.330e-09, 3.249e-09, | |||
| 2771 | 4.495e-09, 5.923e-09, 7.642e-09, 9.607e-09, 1.178e-08, | |||
| 2772 | 1.399e-08, 1.584e-08, 1.730e-08, 1.816e-08, 1.870e-08, | |||
| 2773 | 1.868e-08, 1.870e-08, 1.884e-08, 1.990e-08, 2.150e-08, | |||
| 2774 | 2.258e-08, 2.364e-08, 2.473e-08, 2.602e-08, 2.689e-08, | |||
| 2775 | 2.731e-08, 2.816e-08, 2.859e-08, 2.839e-08, 2.703e-08, | |||
| 2776 | 2.451e-08, 2.149e-08, 1.787e-08, 1.449e-08, 1.111e-08, | |||
| 2777 | 8.282e-09, 6.121e-09, 4.494e-09, 3.367e-09, 2.487e-09, | |||
| 2778 | 1.885e-09, 1.503e-09, 1.249e-09, 1.074e-09, 9.427e-10, | |||
| 2779 | 8.439e-10, 7.563e-10, 6.772e-10, 6.002e-10, 5.254e-10, | |||
| 2780 | 4.588e-10, 3.977e-10, 3.449e-10, 3.003e-10, 2.624e-10, | |||
| 2781 | 2.335e-10, 2.040e-10, 1.771e-10, 1.534e-10, 1.296e-10, | |||
| 2782 | 1.097e-10, 9.173e-11, 7.730e-11, 6.547e-11, 5.191e-11, | |||
| 2783 | 4.198e-11, 3.361e-11, 2.732e-11, 2.244e-11, 1.791e-11, | |||
| 2784 | 1.509e-11, 1.243e-11, 1.035e-11, 8.969e-12, 7.394e-12, | |||
| 2785 | 6.323e-12, 5.282e-12, 4.543e-12, 3.752e-12, 3.140e-12, | |||
| 2786 | 2.600e-12, 2.194e-12, 1.825e-12, 1.511e-12, 1.245e-12, | |||
| 2787 | 1.024e-12, 8.539e-13, 7.227e-13, 6.102e-13, 5.189e-13, | |||
| 2788 | 4.430e-13, 3.774e-13, 3.236e-13, 2.800e-13, 2.444e-13, | |||
| 2789 | 2.156e-13, 1.932e-13, 1.775e-13, 1.695e-13, 1.672e-13, | |||
| 2790 | 1.704e-13, 1.825e-13, 2.087e-13, 2.614e-13, 3.377e-13, | |||
| 2791 | 4.817e-13, 6.989e-13, 1.062e-12, 1.562e-12, 2.288e-12, | |||
| 2792 | 3.295e-12, 4.550e-12, 5.965e-12, 7.546e-12, 9.395e-12, | |||
| 2793 | 1.103e-11, 1.228e-11, 1.318e-11, 1.380e-11, 1.421e-11, | |||
| 2794 | 1.390e-11, 1.358e-11, 1.336e-11, 1.342e-11, 1.356e-11, | |||
| 2795 | 1.424e-11, 1.552e-11, 1.730e-11, 1.951e-11, 2.128e-11, | |||
| 2796 | 2.249e-11, 2.277e-11, 2.226e-11, 2.111e-11, 1.922e-11, | |||
| 2797 | 1.775e-11, 1.661e-11, 1.547e-11, 1.446e-11, 1.323e-11, | |||
| 2798 | 1.210e-11, 1.054e-11, 9.283e-12, 8.671e-12, 8.670e-12, | |||
| 2799 | 9.429e-12, 1.062e-11, 1.255e-11, 1.506e-11, 1.818e-11, | |||
| 2800 | 2.260e-11, 2.831e-11, 3.723e-11, 5.092e-11, 6.968e-11, | |||
| 2801 | 9.826e-11, 1.349e-10, 1.870e-10, 2.580e-10, 3.430e-10, | |||
| 2802 | 4.424e-10, 5.521e-10, 6.812e-10, 8.064e-10, 9.109e-10, | |||
| 2803 | 9.839e-10, 1.028e-09, 1.044e-09, 1.029e-09, 1.005e-09, | |||
| 2804 | 1.002e-09, 1.038e-09, 1.122e-09, 1.233e-09, 1.372e-09, | |||
| 2805 | 1.524e-09, 1.665e-09, 1.804e-09, 1.908e-09, 2.015e-09, | |||
| 2806 | 2.117e-09, 2.219e-09, 2.336e-09, 2.531e-09, 2.805e-09, | |||
| 2807 | 3.189e-09, 3.617e-09, 4.208e-09, 4.911e-09, 5.619e-09, | |||
| 2808 | 6.469e-09, 7.188e-09, 7.957e-09, 8.503e-09, 9.028e-09, | |||
| 2809 | 9.571e-09, 9.990e-09, 1.055e-08, 1.102e-08, 1.132e-08, | |||
| 2810 | 1.141e-08, 1.145e-08, 1.145e-08, 1.176e-08, 1.224e-08, | |||
| 2811 | 1.304e-08, 1.388e-08, 1.445e-08, 1.453e-08, 1.368e-08, | |||
| 2812 | 1.220e-08, 1.042e-08, 8.404e-09, 6.403e-09, 4.643e-09, | |||
| 2813 | 3.325e-09, 2.335e-09, 1.638e-09, 1.190e-09, 9.161e-10, | |||
| 2814 | 7.412e-10, 6.226e-10, 5.516e-10, 5.068e-10, 4.831e-10, | |||
| 2815 | 4.856e-10, 5.162e-10, 5.785e-10, 6.539e-10, 7.485e-10, | |||
| 2816 | 8.565e-10, 9.534e-10, 1.052e-09, 1.115e-09, 1.173e-09, | |||
| 2817 | 1.203e-09, 1.224e-09, 1.243e-09, 1.248e-09, 1.261e-09, | |||
| 2818 | 1.265e-09, 1.250e-09, 1.217e-09, 1.176e-09, 1.145e-09, | |||
| 2819 | 1.153e-09, 1.199e-09, 1.278e-09, 1.366e-09, 1.426e-09, | |||
| 2820 | 1.444e-09, 1.365e-09, 1.224e-09, 1.051e-09, 8.539e-10, | |||
| 2821 | 6.564e-10, 4.751e-10, 3.404e-10, 2.377e-10, 1.631e-10, | |||
| 2822 | 1.114e-10, 7.870e-11, 5.793e-11, 4.284e-11, 3.300e-11, | |||
| 2823 | 2.620e-11, 2.152e-11, 1.777e-11, 1.496e-11, 1.242e-11, | |||
| 2824 | 1.037e-11, 8.725e-12, 7.004e-12, 5.718e-12, 4.769e-12, | |||
| 2825 | 3.952e-12, 3.336e-12, 2.712e-12, 2.213e-12, 1.803e-12, | |||
| 2826 | 1.492e-12, 1.236e-12, 1.006e-12, 8.384e-13, 7.063e-13, | |||
| 2827 | 5.879e-13, 4.930e-13, 4.171e-13, 3.569e-13, 3.083e-13, | |||
| 2828 | 2.688e-13, 2.333e-13, 2.035e-13, 1.820e-13, 1.682e-13, | |||
| 2829 | 1.635e-13, 1.674e-13, 1.769e-13, 2.022e-13, 2.485e-13, | |||
| 2830 | 3.127e-13, 4.250e-13, 5.928e-13, 8.514e-13, 1.236e-12, | |||
| 2831 | 1.701e-12, 2.392e-12, 3.231e-12, 4.350e-12, 5.559e-12, | |||
| 2832 | 6.915e-12, 8.519e-12, 1.013e-11, 1.146e-11, 1.240e-11, | |||
| 2833 | 1.305e-11, 1.333e-11, 1.318e-11, 1.263e-11, 1.238e-11, | |||
| 2834 | 1.244e-11, 1.305e-11, 1.432e-11, 1.623e-11, 1.846e-11, | |||
| 2835 | 2.090e-11, 2.328e-11, 2.526e-11, 2.637e-11, 2.702e-11, | |||
| 2836 | 2.794e-11, 2.889e-11, 2.989e-11, 3.231e-11, 3.680e-11, | |||
| 2837 | 4.375e-11, 5.504e-11, 7.159e-11, 9.502e-11, 1.279e-10, | |||
| 2838 | 1.645e-10, 2.098e-10, 2.618e-10, 3.189e-10, 3.790e-10, | |||
| 2839 | 4.303e-10, 4.753e-10, 5.027e-10, 5.221e-10, 5.293e-10, | |||
| 2840 | 5.346e-10, 5.467e-10, 5.796e-10, 6.200e-10, 6.454e-10, | |||
| 2841 | 6.705e-10, 6.925e-10, 7.233e-10, 7.350e-10, 7.538e-10, | |||
| 2842 | 7.861e-10, 8.077e-10, 8.132e-10, 7.749e-10, 7.036e-10, | |||
| 2843 | 6.143e-10, 5.093e-10, 4.089e-10, 3.092e-10, 2.299e-10, | |||
| 2844 | 1.705e-10, 1.277e-10, 9.723e-11, 7.533e-11, 6.126e-11, | |||
| 2845 | 5.154e-11, 4.428e-11, 3.913e-11, 3.521e-11, 3.297e-11, | |||
| 2846 | 3.275e-11, 3.460e-11, 3.798e-11, 4.251e-11, 4.745e-11, | |||
| 2847 | 5.232e-11, 5.606e-11, 5.820e-11, 5.880e-11, 5.790e-11, | |||
| 2848 | 5.661e-11, 5.491e-11, 5.366e-11, 5.341e-11, 5.353e-11, | |||
| 2849 | 5.336e-11, 5.293e-11, 5.248e-11, 5.235e-11, 5.208e-11, | |||
| 2850 | 5.322e-11, 5.521e-11, 5.725e-11, 5.827e-11, 5.685e-11, | |||
| 2851 | 5.245e-11, 4.612e-11, 3.884e-11, 3.129e-11, 2.404e-11, | |||
| 2852 | 1.732e-11, 1.223e-11, 8.574e-12, 5.888e-12, 3.986e-12, | |||
| 2853 | 2.732e-12, 1.948e-12, 1.414e-12, 1.061e-12, 8.298e-13, | |||
| 2854 | 6.612e-13, 5.413e-13, 4.472e-13, 3.772e-13, 3.181e-13, | |||
| 2855 | 2.645e-13, 2.171e-13, 1.778e-13, 1.464e-13, 1.183e-13, | |||
| 2856 | 9.637e-14, 7.991e-14, 6.668e-14, 5.570e-14, 4.663e-14, | |||
| 2857 | 3.848e-14, 3.233e-14, 2.706e-14, 2.284e-14, 1.944e-14, | |||
| 2858 | 1.664e-14, 1.430e-14, 1.233e-14, 1.066e-14, 9.234e-15, | |||
| 2859 | 8.023e-15, 6.993e-15, 6.119e-15, 5.384e-15, 4.774e-15, | |||
| 2860 | 4.283e-15, 3.916e-15, 3.695e-15, 3.682e-15, 4.004e-15, | |||
| 2861 | 4.912e-15, 6.853e-15, 1.056e-14, 1.712e-14, 2.804e-14, | |||
| 2862 | 4.516e-14, 7.113e-14, 1.084e-13, 1.426e-13, 1.734e-13, | |||
| 2863 | 1.978e-13, 2.194e-13, 2.388e-13, 2.489e-13, 2.626e-13, | |||
| 2864 | 2.865e-13, 3.105e-13, 3.387e-13, 3.652e-13, 3.984e-13, | |||
| 2865 | 4.398e-13, 4.906e-13, 5.550e-13, 6.517e-13, 7.813e-13, | |||
| 2866 | 9.272e-13, 1.164e-12, 1.434e-12, 1.849e-12, 2.524e-12, | |||
| 2867 | 3.328e-12, 4.523e-12, 6.108e-12, 8.207e-12, 1.122e-11, | |||
| 2868 | 1.477e-11, 1.900e-11, 2.412e-11, 2.984e-11, 3.680e-11, | |||
| 2869 | 4.353e-11, 4.963e-11, 5.478e-11, 5.903e-11, 6.233e-11, | |||
| 2870 | 6.483e-11, 6.904e-11, 7.569e-11, 8.719e-11, 1.048e-10, | |||
| 2871 | 1.278e-10, 1.557e-10, 1.869e-10, 2.218e-10, 2.610e-10, | |||
| 2872 | 2.975e-10, 3.371e-10, 3.746e-10, 4.065e-10, 4.336e-10, | |||
| 2873 | 4.503e-10, 4.701e-10, 4.800e-10, 4.917e-10, 5.038e-10, | |||
| 2874 | 5.128e-10, 5.143e-10, 5.071e-10, 5.019e-10, 5.025e-10, | |||
| 2875 | 5.183e-10, 5.496e-10, 5.877e-10, 6.235e-10, 6.420e-10, | |||
| 2876 | 6.234e-10, 5.698e-10, 4.916e-10, 4.022e-10, 3.126e-10, | |||
| 2877 | 2.282e-10, 1.639e-10, 1.142e-10, 7.919e-11, 5.690e-11, | |||
| 2878 | 4.313e-11, 3.413e-11, 2.807e-11, 2.410e-11, 2.166e-11, | |||
| 2879 | 2.024e-11, 1.946e-11, 1.929e-11, 1.963e-11, 2.035e-11, | |||
| 2880 | 2.162e-11, 2.305e-11, 2.493e-11, 2.748e-11, 3.048e-11, | |||
| 2881 | 3.413e-11, 3.754e-11, 4.155e-11, 4.635e-11, 5.110e-11, | |||
| 2882 | 5.734e-11, 6.338e-11, 6.990e-11, 7.611e-11, 8.125e-11, | |||
| 2883 | 8.654e-11, 8.951e-11, 9.182e-11, 9.310e-11, 9.273e-11, | |||
| 2884 | 9.094e-11, 8.849e-11, 8.662e-11, 8.670e-11, 8.972e-11, | |||
| 2885 | 9.566e-11, 1.025e-10, 1.083e-10, 1.111e-10, 1.074e-10, | |||
| 2886 | 9.771e-11, 8.468e-11, 6.958e-11, 5.470e-11, 4.040e-11, | |||
| 2887 | 2.940e-11, 2.075e-11, 1.442e-11, 1.010e-11, 7.281e-12, | |||
| 2888 | 5.409e-12, 4.138e-12, 3.304e-12, 2.784e-12, 2.473e-12, | |||
| 2889 | 2.273e-12, 2.186e-12, 2.118e-12, 2.066e-12, 1.958e-12, | |||
| 2890 | 1.818e-12, 1.675e-12, 1.509e-12, 1.349e-12, 1.171e-12, | |||
| 2891 | 9.838e-13, 8.213e-13, 6.765e-13, 5.378e-13, 4.161e-13, | |||
| 2892 | 3.119e-13, 2.279e-13, 1.637e-13, 1.152e-13, 8.112e-14, | |||
| 2893 | 5.919e-14, 4.470e-14, 3.492e-14, 2.811e-14, 2.319e-14, | |||
| 2894 | 1.948e-14, 1.660e-14, 1.432e-14, 1.251e-14, 1.109e-14, | |||
| 2895 | 1.006e-14, 9.450e-15, 9.384e-15, 1.012e-14, 1.216e-14, | |||
| 2896 | 1.636e-14, 2.305e-14, 3.488e-14, 5.572e-14, 8.479e-14, | |||
| 2897 | 1.265e-13, 1.905e-13, 2.730e-13, 3.809e-13, 4.955e-13, | |||
| 2898 | 6.303e-13, 7.861e-13, 9.427e-13, 1.097e-12, 1.212e-12, | |||
| 2899 | 1.328e-12, 1.415e-12, 1.463e-12, 1.495e-12, 1.571e-12, | |||
| 2900 | 1.731e-12, 1.981e-12, 2.387e-12, 2.930e-12, 3.642e-12, | |||
| 2901 | 4.584e-12, 5.822e-12, 7.278e-12, 9.193e-12, 1.135e-11, | |||
| 2902 | 1.382e-11, 1.662e-11, 1.958e-11, 2.286e-11, 2.559e-11, | |||
| 2903 | 2.805e-11, 2.988e-11, 3.106e-11, 3.182e-11, 3.200e-11, | |||
| 2904 | 3.258e-11, 3.362e-11, 3.558e-11, 3.688e-11, 3.800e-11, | |||
| 2905 | 3.929e-11, 4.062e-11, 4.186e-11, 4.293e-11, 4.480e-11, | |||
| 2906 | 4.643e-11, 4.704e-11, 4.571e-11, 4.206e-11, 3.715e-11, | |||
| 2907 | 3.131e-11, 2.541e-11, 1.978e-11, 1.508e-11, 1.146e-11, | |||
| 2908 | 8.700e-12, 6.603e-12, 5.162e-12, 4.157e-12, 3.408e-12, | |||
| 2909 | 2.829e-12, 2.405e-12, 2.071e-12, 1.826e-12, 1.648e-12, | |||
| 2910 | 1.542e-12, 1.489e-12, 1.485e-12, 1.493e-12, 1.545e-12, | |||
| 2911 | 1.637e-12, 1.814e-12, 2.061e-12, 2.312e-12, 2.651e-12, | |||
| 2912 | 3.030e-12, 3.460e-12, 3.901e-12, 4.306e-12, 4.721e-12, | |||
| 2913 | 5.008e-12, 5.281e-12, 5.541e-12, 5.791e-12, 6.115e-12, | |||
| 2914 | 6.442e-12, 6.680e-12, 6.791e-12, 6.831e-12, 6.839e-12, | |||
| 2915 | 6.946e-12, 7.128e-12, 7.537e-12, 8.036e-12, 8.392e-12, | |||
| 2916 | 8.526e-12, 8.110e-12, 7.325e-12, 6.329e-12, 5.183e-12, | |||
| 2917 | 4.081e-12, 2.985e-12, 2.141e-12, 1.492e-12, 1.015e-12, | |||
| 2918 | 6.684e-13, 4.414e-13, 2.987e-13, 2.038e-13, 1.391e-13, | |||
| 2919 | 9.860e-14, 7.240e-14, 5.493e-14, 4.288e-14, 3.427e-14, | |||
| 2920 | 2.787e-14, 2.296e-14, 1.909e-14, 1.598e-14, 1.344e-14, | |||
| 2921 | 1.135e-14, 9.616e-15, 8.169e-15, 6.957e-15, 5.938e-15, | |||
| 2922 | 5.080e-15, 4.353e-15, 3.738e-15, 3.217e-15, 2.773e-15, | |||
| 2923 | 2.397e-15, 2.077e-15, 1.805e-15, 1.575e-15, 1.382e-15, | |||
| 2924 | 1.221e-15, 1.090e-15, 9.855e-16, 9.068e-16, 8.537e-16, | |||
| 2925 | 8.270e-16, 8.290e-16, 8.634e-16, 9.359e-16, 1.055e-15, | |||
| 2926 | 1.233e-15, 1.486e-15, 1.839e-15, 2.326e-15, 2.998e-15, | |||
| 2927 | 3.934e-15, 5.256e-15, 7.164e-15, 9.984e-15, 1.427e-14, | |||
| 2928 | 2.099e-14, 3.196e-14, 5.121e-14, 7.908e-14, 1.131e-13, | |||
| 2929 | 1.602e-13, 2.239e-13, 3.075e-13, 4.134e-13, 5.749e-13, | |||
| 2930 | 7.886e-13, 1.071e-12, 1.464e-12, 2.032e-12, 2.800e-12, | |||
| 2931 | 3.732e-12, 4.996e-12, 6.483e-12, 8.143e-12, 1.006e-11, | |||
| 2932 | 1.238e-11, 1.484e-11, 1.744e-11, 2.020e-11, 2.274e-11, | |||
| 2933 | 2.562e-11, 2.848e-11, 3.191e-11, 3.617e-11, 4.081e-11, | |||
| 2934 | 4.577e-11, 4.937e-11, 5.204e-11, 5.401e-11, 5.462e-11, | |||
| 2935 | 5.507e-11, 5.510e-11, 5.605e-11, 5.686e-11, 5.739e-11, | |||
| 2936 | 5.766e-11, 5.740e-11, 5.754e-11, 5.761e-11, 5.777e-11, | |||
| 2937 | 5.712e-11, 5.510e-11, 5.088e-11, 4.438e-11, 3.728e-11, | |||
| 2938 | 2.994e-11, 2.305e-11, 1.715e-11, 1.256e-11, 9.208e-12, | |||
| 2939 | 6.745e-12, 5.014e-12, 3.785e-12, 2.900e-12, 2.239e-12, | |||
| 2940 | 1.757e-12, 1.414e-12, 1.142e-12, 9.482e-13, 8.010e-13, | |||
| 2941 | 6.961e-13, 6.253e-13, 5.735e-13, 5.433e-13, 5.352e-13, | |||
| 2942 | 5.493e-13, 5.706e-13, 6.068e-13, 6.531e-13, 7.109e-13, | |||
| 2943 | 7.767e-13, 8.590e-13, 9.792e-13, 1.142e-12, 1.371e-12, | |||
| 2944 | 1.650e-12, 1.957e-12, 2.302e-12, 2.705e-12, 3.145e-12, | |||
| 2945 | 3.608e-12, 4.071e-12, 4.602e-12, 5.133e-12, 5.572e-12, | |||
| 2946 | 5.987e-12, 6.248e-12, 6.533e-12, 6.757e-12, 6.935e-12, | |||
| 2947 | 7.224e-12, 7.422e-12, 7.538e-12, 7.547e-12, 7.495e-12, | |||
| 2948 | 7.543e-12, 7.725e-12, 8.139e-12, 8.627e-12, 9.146e-12, | |||
| 2949 | 9.443e-12, 9.318e-12, 8.649e-12, 7.512e-12, 6.261e-12, | |||
| 2950 | 4.915e-12, 3.647e-12, 2.597e-12, 1.785e-12, 1.242e-12, | |||
| 2951 | 8.660e-13, 6.207e-13, 4.610e-13, 3.444e-13, 2.634e-13, | |||
| 2952 | 2.100e-13, 1.725e-13, 1.455e-13, 1.237e-13, 1.085e-13, | |||
| 2953 | 9.513e-14, 7.978e-14, 6.603e-14, 5.288e-14, 4.084e-14, | |||
| 2954 | 2.952e-14, 2.157e-14, 1.593e-14, 1.199e-14, 9.267e-15, | |||
| 2955 | 7.365e-15, 6.004e-15, 4.995e-15, 4.218e-15, 3.601e-15, | |||
| 2956 | 3.101e-15, 2.692e-15, 2.360e-15, 2.094e-15, 1.891e-15, | |||
| 2957 | 1.755e-15, 1.699e-15, 1.755e-15, 1.987e-15, 2.506e-15, | |||
| 2958 | 3.506e-15, 5.289e-15, 8.311e-15, 1.325e-14, 2.129e-14, | |||
| 2959 | 3.237e-14, 4.595e-14, 6.441e-14, 8.433e-14, 1.074e-13, | |||
| 2960 | 1.383e-13, 1.762e-13, 2.281e-13, 2.831e-13, 3.523e-13, | |||
| 2961 | 4.380e-13, 5.304e-13, 6.290e-13, 7.142e-13, 8.032e-13, | |||
| 2962 | 8.934e-13, 9.888e-13, 1.109e-12, 1.261e-12, 1.462e-12, | |||
| 2963 | 1.740e-12, 2.099e-12, 2.535e-12, 3.008e-12, 3.462e-12, | |||
| 2964 | 3.856e-12, 4.098e-12, 4.239e-12, 4.234e-12, 4.132e-12, | |||
| 2965 | 3.986e-12, 3.866e-12, 3.829e-12, 3.742e-12, 3.705e-12, | |||
| 2966 | 3.694e-12, 3.765e-12, 3.849e-12, 3.929e-12, 4.056e-12, | |||
| 2967 | 4.092e-12, 4.047e-12, 3.792e-12, 3.407e-12, 2.953e-12, | |||
| 2968 | 2.429e-12, 1.931e-12, 1.460e-12, 1.099e-12, 8.199e-13, | |||
| 2969 | 6.077e-13, 4.449e-13, 3.359e-13, 2.524e-13, 1.881e-13, | |||
| 2970 | 1.391e-13, 1.020e-13, 7.544e-14, 5.555e-14, 4.220e-14, | |||
| 2971 | 3.321e-14, 2.686e-14, 2.212e-14, 1.780e-14, 1.369e-14, | |||
| 2972 | 1.094e-14, 9.130e-15, 8.101e-15, 7.828e-15, 8.393e-15, | |||
| 2973 | 1.012e-14, 1.259e-14, 1.538e-14, 1.961e-14, 2.619e-14, | |||
| 2974 | 3.679e-14, 5.049e-14, 6.917e-14, 8.880e-14, 1.115e-13, | |||
| 2975 | 1.373e-13, 1.619e-13, 1.878e-13, 2.111e-13, 2.330e-13, | |||
| 2976 | 2.503e-13, 2.613e-13, 2.743e-13, 2.826e-13, 2.976e-13, | |||
| 2977 | 3.162e-13, 3.360e-13, 3.491e-13, 3.541e-13, 3.595e-13, | |||
| 2978 | 3.608e-13, 3.709e-13, 3.869e-13, 4.120e-13, 4.366e-13, | |||
| 2979 | 4.504e-13, 4.379e-13, 3.955e-13, 3.385e-13, 2.741e-13, | |||
| 2980 | 2.089e-13, 1.427e-13, 9.294e-14, 5.775e-14, 3.565e-14, | |||
| 2981 | 2.210e-14, 1.398e-14, 9.194e-15, 6.363e-15, 4.644e-15, | |||
| 2982 | 3.550e-15, 2.808e-15, 2.274e-15, 1.871e-15, 1.557e-15, | |||
| 2983 | 1.308e-15, 1.108e-15, 9.488e-16, 8.222e-16, 7.238e-16, | |||
| 2984 | 6.506e-16, 6.008e-16, 5.742e-16, 5.724e-16, 5.991e-16, | |||
| 2985 | 6.625e-16, 7.775e-16, 9.734e-16, 1.306e-15, 1.880e-15, | |||
| 2986 | 2.879e-15, 4.616e-15, 7.579e-15, 1.248e-14, 2.030e-14, | |||
| 2987 | 3.244e-14, 5.171e-14, 7.394e-14, 9.676e-14, 1.199e-13, | |||
| 2988 | 1.467e-13, 1.737e-13, 2.020e-13, 2.425e-13, 3.016e-13, | |||
| 2989 | 3.700e-13, 4.617e-13, 5.949e-13, 7.473e-13, 9.378e-13, | |||
| 2990 | 1.191e-12, 1.481e-12, 1.813e-12, 2.232e-12, 2.722e-12, | |||
| 2991 | 3.254e-12, 3.845e-12, 4.458e-12, 5.048e-12, 5.511e-12, | |||
| 2992 | 5.898e-12, 6.204e-12, 6.293e-12, 6.386e-12, 6.467e-12, | |||
| 2993 | 6.507e-12, 6.466e-12, 6.443e-12, 6.598e-12, 6.873e-12, | |||
| 2994 | 7.300e-12, 7.816e-12, 8.368e-12, 8.643e-12, 8.466e-12, | |||
| 2995 | 7.871e-12, 6.853e-12, 5.714e-12, 4.482e-12, 3.392e-12, | |||
| 2996 | 2.613e-12, 2.008e-12, 1.562e-12, 1.228e-12, 9.888e-13, | |||
| 2997 | 7.646e-13, 5.769e-13, 4.368e-13, 3.324e-13, 2.508e-13, | |||
| 2998 | 1.916e-13}; | |||
| 2999 | ||||
| 3000 | /* | |||
| 3001 | --------------------------- CKD_MT_3.20 ------------------------- | |||
| 3002 | ||||
| 3003 | 29 October 2018 | |||
| 3004 | ||||
| 3005 | Release Notes for MT_CKD_3.20 | |||
| 3006 | ||||
| 3007 | Prepared by S. A. Clough, | |||
| 3008 | AER Inc., | |||
| 3009 | 131 Harwell Avenue | |||
| 3010 | Lexington, MA 02421 | |||
| 3011 | clough@aer.com | |||
| 3012 | ||||
| 3013 | The continuum was updated to MT_CKD_3.2, which has new self continnum | |||
| 3014 | coefficients in window regions for wavenumbers greater than 2000 cm-1 | |||
| 3015 | and updated self continuum temperature dependence from 1800-3500 cm-1 | |||
| 3016 | (E.J. Mlawer, M.J. Alvarado, K.E. Cady-Pereira) | |||
| 3017 | ||||
| 3018 | The continuum has been updated to MT_CKD v3.0, which included modifications | |||
| 3019 | to the H2O foreign continuum from 0-600 cm-1 and the self continuum in the | |||
| 3020 | microwave that resulted from an analysis of measurements taken at the ARM | |||
| 3021 | RHUBC-II campaign and a re-analysis of RHUBC-I measurements. (E.J. Mlawer, | |||
| 3022 | D.D. Turner, S.N. Paine, V.H. Payne) | |||
| 3023 | ||||
| 3024 | further information can be found under | |||
| 3025 | http://www.rtweb.aer.com/continuum_frame.html | |||
| 3026 | ||||
| 3027 | Transformation from original F77 code to C/C++ by | |||
| 3028 | E. Turner, Met Office UK, 29 October 2018 | |||
| 3029 | ||||
| 3030 | --------------------------- CKD_MT_3.20 ------------------------- | |||
| 3031 | */ | |||
| 3032 | ||||
| 3033 | // H2O self continuum parameters at T=296 K | |||
| 3034 | // date of last update: 10/29/18 | |||
| 3035 | // units of (CM**3/MOL)*1.E-20 | |||
| 3036 | const Numeric SL296_ckd_mt_320_v1 = -20.0; | |||
| 3037 | const Numeric SL296_ckd_mt_320_v2 = 20000.0; | |||
| 3038 | const Numeric SL296_ckd_mt_320_dv = 10.0; | |||
| 3039 | const int SL296_ckd_mt_320_npt = 2003; | |||
| 3040 | const double SL296_ckd_mt_320[SL296_ckd_mt_320_npt+addF77fields] = { | |||
| 3041 | 0.000e0, 1.720e-01, 1.695e-01, | |||
| 3042 | 1.700e-01, 1.695e-01, 1.720e-01, 1.680e-01, 1.687e-01, | |||
| 3043 | 1.624e-01, 1.606e-01, 1.508e-01, 1.447e-01, 1.344e-01, | |||
| 3044 | 1.214e-01, 1.133e-01, 1.009e-01, 9.217e-02, 8.297e-02, | |||
| 3045 | 6.989e-02, 6.513e-02, 5.469e-02, 5.056e-02, 4.417e-02, | |||
| 3046 | 3.779e-02, 3.484e-02, 2.994e-02, 2.720e-02, 2.325e-02, | |||
| 3047 | 2.063e-02, 1.818e-02, 1.592e-02, 1.405e-02, 1.251e-02, | |||
| 3048 | 1.080e-02, 9.647e-03, 8.424e-03, 7.519e-03, 6.555e-03, | |||
| 3049 | 5.880e-03, 5.136e-03, 4.511e-03, 3.989e-03, 3.509e-03, | |||
| 3050 | 3.114e-03, 2.740e-03, 2.446e-03, 2.144e-03, 1.895e-03, | |||
| 3051 | 1.676e-03, 1.486e-03, 1.312e-03, 1.164e-03, 1.031e-03, | |||
| 3052 | 9.129e-04, 8.106e-04, 7.213e-04, 6.400e-04, 5.687e-04, | |||
| 3053 | 5.063e-04, 4.511e-04, 4.029e-04, 3.596e-04, 3.220e-04, | |||
| 3054 | 2.889e-04, 2.597e-04, 2.337e-04, 2.108e-04, 1.907e-04, | |||
| 3055 | 1.728e-04, 1.570e-04, 1.430e-04, 1.305e-04, 1.195e-04, | |||
| 3056 | 1.097e-04, 1.009e-04, 9.307e-05, 8.604e-05, 7.971e-05, | |||
| 3057 | 7.407e-05, 6.896e-05, 6.433e-05, 6.013e-05, 5.631e-05, | |||
| 3058 | 5.283e-05, 4.963e-05, 4.669e-05, 4.398e-05, 4.148e-05, | |||
| 3059 | 3.917e-05, 3.702e-05, 3.502e-05, 3.316e-05, 3.142e-05, | |||
| 3060 | 2.978e-05, 2.825e-05, 2.681e-05, 2.546e-05, 2.419e-05, | |||
| 3061 | 2.299e-05, 2.186e-05, 2.079e-05, 1.979e-05, 1.884e-05, | |||
| 3062 | 1.795e-05, 1.711e-05, 1.633e-05, 1.559e-05, 1.490e-05, | |||
| 3063 | 1.426e-05, 1.367e-05, 1.312e-05, 1.263e-05, 1.218e-05, | |||
| 3064 | 1.178e-05, 1.143e-05, 1.112e-05, 1.088e-05, 1.070e-05, | |||
| 3065 | 1.057e-05, 1.050e-05, 1.051e-05, 1.059e-05, 1.076e-05, | |||
| 3066 | 1.100e-05, 1.133e-05, 1.180e-05, 1.237e-05, 1.308e-05, | |||
| 3067 | 1.393e-05, 1.483e-05, 1.614e-05, 1.758e-05, 1.930e-05, | |||
| 3068 | 2.123e-05, 2.346e-05, 2.647e-05, 2.930e-05, 3.279e-05, | |||
| 3069 | 3.745e-05, 4.152e-05, 4.813e-05, 5.477e-05, 6.203e-05, | |||
| 3070 | 7.331e-05, 8.056e-05, 9.882e-05, 1.050e-04, 1.210e-04, | |||
| 3071 | 1.341e-04, 1.572e-04, 1.698e-04, 1.968e-04, 2.175e-04, | |||
| 3072 | 2.431e-04, 2.735e-04, 2.867e-04, 3.190e-04, 3.371e-04, | |||
| 3073 | 3.554e-04, 3.726e-04, 3.837e-04, 3.878e-04, 3.864e-04, | |||
| 3074 | 3.858e-04, 3.841e-04, 3.852e-04, 3.815e-04, 3.762e-04, | |||
| 3075 | 3.618e-04, 3.579e-04, 3.450e-04, 3.202e-04, 3.018e-04, | |||
| 3076 | 2.785e-04, 2.602e-04, 2.416e-04, 2.097e-04, 1.939e-04, | |||
| 3077 | 1.689e-04, 1.498e-04, 1.308e-04, 1.170e-04, 1.011e-04, | |||
| 3078 | 9.237e-05, 7.909e-05, 7.006e-05, 6.112e-05, 5.401e-05, | |||
| 3079 | 4.914e-05, 4.266e-05, 3.963e-05, 3.316e-05, 3.037e-05, | |||
| 3080 | 2.598e-05, 2.294e-05, 2.066e-05, 1.813e-05, 1.583e-05, | |||
| 3081 | 1.423e-05, 1.247e-05, 1.116e-05, 9.760e-06, 8.596e-06, | |||
| 3082 | 7.720E-06, 7.091E-06, 6.499E-06, 5.801E-06, 5.150E-06, // section diff to MT_1.0 | |||
| 3083 | 4.500E-06, 4.000E-06, 3.509E-06, 3.100E-06, 2.714E-06, | |||
| 3084 | 2.406E-06, 2.108E-06, 1.875E-06, 1.669E-06, 1.555E-06, | |||
| 3085 | 1.444E-06, 1.345E-06, 1.257E-06, 1.175E-06, 1.102E-06, | |||
| 3086 | 1.035E-06, 9.745E-07, 9.194E-07, 8.685E-07, 8.222E-07, | |||
| 3087 | 7.798E-07, 7.412E-07, 7.052E-07, 6.724E-07, 6.420E-07, | |||
| 3088 | 6.143E-07, 5.886E-07, 5.649E-07, 5.430E-07, 5.228E-07, | |||
| 3089 | 5.041E-07, 4.868E-07, 4.708E-07, 4.559E-07, 4.421E-07, | |||
| 3090 | 4.293E-07, 4.174E-07, 4.064E-07, 3.961E-07, 3.865E-07, | |||
| 3091 | 3.775E-07, 3.692E-07, 3.614E-07, 3.542E-07, 3.474E-07, | |||
| 3092 | 3.411E-07, 3.353E-07, 3.298E-07, 3.248E-07, 3.201E-07, | |||
| 3093 | 3.158E-07, 3.119E-07, 3.084E-07, 3.053E-07, 3.025E-07, | |||
| 3094 | 3.003E-07, 2.988E-07, 2.976E-07, 2.977E-07, 2.989E-07, | |||
| 3095 | 3.015E-07, 3.057E-07, 3.112E-07, 3.161E-07, 3.186E-07, | |||
| 3096 | 3.176E-07, 3.142E-07, 3.099E-07, 3.065E-07, 3.011E-07, | |||
| 3097 | 2.955E-07, 2.914E-07, 2.884E-07, 2.864E-07, 2.858E-07, | |||
| 3098 | 2.851E-07, 2.857E-07, 2.870E-07, 2.888E-07, 2.914E-07, | |||
| 3099 | 2.948E-07, 2.990E-07, 3.042E-07, 3.105E-07, 3.185E-07, | |||
| 3100 | 3.276E-07, 3.385E-07, 3.511E-07, 3.646E-07, 3.858E-07, | |||
| 3101 | 4.081E-07, 4.335E-07, 4.643E-07, 5.011E-07, 5.494E-07, | |||
| 3102 | 5.953E-07, 6.354E-07, 7.116E-07, 7.498E-07, 8.613E-07, | |||
| 3103 | 9.350E-07, 1.002E-06, 1.090E-06, 1.174E-06, 1.230E-06, | |||
| 3104 | 1.288E-06, 1.334E-06, 1.383E-06, 1.380E-06, 1.390E-06, | |||
| 3105 | 1.373E-06, 1.354E-06, 1.335E-06, 1.343E-06, 1.323E-06, | |||
| 3106 | 1.349E-06, 1.353E-06, 1.362E-06, 1.344E-06, 1.329E-06, | |||
| 3107 | 1.336E-06, 1.327E-06, 1.325E-06, 1.359E-06, 1.374E-06, | |||
| 3108 | 1.415E-06, 1.462E-06, 1.526E-06, 1.619E-06, 1.735E-06, | |||
| 3109 | 1.863E-06, 2.034E-06, 2.265E-06, 2.482E-06, 2.756E-06, | |||
| 3110 | 3.103E-06, 3.466E-06, 3.832E-06, 4.378E-06, 4.913E-06, | |||
| 3111 | 5.651E-06, 6.311E-06, 7.169E-06, 8.057E-06, 9.253E-06, | |||
| 3112 | 1.047E-05, 1.212E-05, 1.360E-05, 1.569E-05, 1.776E-05, | |||
| 3113 | 2.020E-05, 2.281E-05, 2.683E-05, 2.994E-05, 3.488E-05, | |||
| 3114 | 3.896E-05, 4.499E-05, 5.175E-05, 6.035E-05, 6.340E-05, | |||
| 3115 | 7.281E-05, 7.923E-05, 8.348E-05, 9.631E-05, 1.044E-04, | |||
| 3116 | 1.102E-04, 1.176E-04, 1.244E-04, 1.283E-04, 1.326E-04, | |||
| 3117 | 1.400E-04, 1.395E-04, 1.387E-04, 1.363E-04, 1.314E-04, | |||
| 3118 | 1.241E-04, 1.228E-04, 1.148E-04, 1.086E-04, 1.018E-04, | |||
| 3119 | 8.890E-05, 8.316E-05, 7.292E-05, 6.452E-05, 5.625E-05, | |||
| 3120 | 5.045E-05, 4.380E-05, 3.762E-05, 3.290E-05, 2.836E-05, | |||
| 3121 | 2.485E-05, 2.168E-05, 1.895E-05, 1.659E-05, 1.453E-05, | |||
| 3122 | 1.282E-05, 1.132E-05, 1.001E-05, 8.836E-06, 7.804E-06, | |||
| 3123 | 6.922E-06, 6.116E-06, 5.429E-06, 4.824E-06, 4.278E-06, | |||
| 3124 | 3.788E-06, 3.371E-06, 2.985E-06, 2.649E-06, 2.357E-06, | |||
| 3125 | 2.090E-06, 1.858E-06, 1.647E-06, 1.462E-06, 1.299E-06, | |||
| 3126 | 1.155E-06, 1.028E-06, 9.142E-07, 8.132E-07, 7.246E-07, | |||
| 3127 | 6.418E-07, 5.726E-07, 5.221E-07, 4.890E-07, 4.666E-07, | |||
| 3128 | 4.443E-07, 4.203E-07, 3.978E-07, 3.770E-07, 3.575E-07, | |||
| 3129 | 3.395E-07, 3.227E-07, 3.070E-07, 2.924E-07, 2.788E-07, | |||
| 3130 | 2.661E-07, 2.543E-07, 2.433E-07, 2.329E-07, 2.233E-07, | |||
| 3131 | 2.143E-07, 2.058E-07, 1.980E-07, 1.906E-07, 1.837E-07, | |||
| 3132 | 1.773E-07, 1.713E-07, 1.657E-07, 1.605E-07, 1.557E-07, | |||
| 3133 | 1.514E-07, 1.472E-07, 1.435E-07, 1.404E-07, 1.377E-07, | |||
| 3134 | 1.354E-07, 1.332E-07, 1.308E-07, 1.282E-07, 1.256E-07, | |||
| 3135 | 1.227E-07, 1.192E-07, 1.159E-07, 1.134E-07, 1.114E-07, | |||
| 3136 | 1.098E-07, 1.081E-07, 1.066E-07, 1.055E-07, 1.045E-07, | |||
| 3137 | 1.036E-07, 1.030E-07, 1.026E-07, 1.025E-07, 1.025E-07, | |||
| 3138 | 1.028E-07, 1.033E-07, 1.041E-07, 1.049E-07, 1.060E-07, | |||
| 3139 | 1.075E-07, 1.093E-07, 1.114E-07, 1.139E-07, 1.166E-07, | |||
| 3140 | 1.199E-07, 1.239E-07, 1.282E-07, 1.316E-07, 1.355E-07, | |||
| 3141 | 1.436E-07, 1.588E-07, 1.807E-07, 2.060E-07, 2.337E-07, | |||
| 3142 | 2.645E-07, 2.996E-07, 3.393E-07, 3.843E-07, 4.363E-07, | |||
| 3143 | 4.935E-07, 5.607E-07, 6.363E-07, 7.242E-07, 8.230E-07, | |||
| 3144 | 9.411E-07, 1.071E-06, 1.232E-06, 1.402E-06, 1.600E-06, | |||
| 3145 | 1.820E-06, 2.128E-06, 2.386E-06, 2.781E-06, 3.242E-06, | |||
| 3146 | 3.653E-06, 4.323E-06, 4.747E-06, 5.321E-06, 5.919E-06, | |||
| 3147 | 6.681E-06, 7.101E-06, 7.983E-06, 8.342E-06, 8.741E-06, | |||
| 3148 | 9.431E-06, 9.952E-06, 1.026E-05, 1.055E-05, 1.095E-05, | |||
| 3149 | 1.095E-05, 1.087E-05, 1.056E-05, 1.026E-05, 9.715E-06, | |||
| 3150 | 9.252E-06, 8.452E-06, 7.958E-06, 7.268E-06, 6.295E-06, | |||
| 3151 | 6.003E-06, 5.000E-06, 4.591E-06, 3.983E-06, 3.479E-06, | |||
| 3152 | 3.058E-06, 2.667E-06, 2.293E-06, 1.995E-06, 1.747E-06, | |||
| 3153 | 1.517E-06, 1.335E-06, 1.165E-06, 1.028E-06, 9.007E-07, | |||
| 3154 | 7.956E-07, 7.015E-07, 6.192E-07, 5.491E-07, 4.859E-07, | |||
| 3155 | 4.297E-07, 3.799E-07, 3.380E-07, 3.002E-07, 2.659E-07, | |||
| 3156 | 2.366E-07, 2.103E-07, 1.861E-07, 1.655E-07, 1.469E-07, | |||
| 3157 | 1.309E-07, 1.162E-07, 1.032E-07, 9.198E-08, 8.181E-08, | |||
| 3158 | 7.294E-08, 6.516E-08, 5.787E-08, 5.163E-08, 4.612E-08, | |||
| 3159 | 4.096E-08, 3.654E-08, 3.299E-08, 3.052E-08, 2.856E-08, | |||
| 3160 | 2.683E-08, 2.507E-08, 2.346E-08, 2.194E-08, 2.053E-08, | |||
| 3161 | 1.921E-08, 1.799E-08, 1.686E-08, 1.580E-08, 1.481E-08, | |||
| 3162 | 1.389E-08, 1.304E-08, 1.226E-08, 1.151E-08, 1.083E-08, | |||
| 3163 | 1.020E-08, 9.618E-09, 9.080E-09, 8.575E-09, 8.080E-09, | |||
| 3164 | 7.624E-09, 7.176E-09, 6.761E-09, 6.370E-09, 6.004E-09, | |||
| 3165 | 5.672E-09, 5.371E-09, 5.097E-09, 4.845E-09, 4.608E-09, | |||
| 3166 | 4.390E-09, 4.192E-09, 4.011E-09, 3.846E-09, 3.698E-09, | |||
| 3167 | 3.568E-09, 3.450E-09, 3.351E-09, 3.268E-09, 3.195E-09, | |||
| 3168 | 3.131E-09, 3.091E-09, 3.060E-09, 3.039E-09, 3.034E-09, | |||
| 3169 | 3.045E-09, 3.072E-09, 3.116E-09, 3.176E-09, 3.253E-09, | |||
| 3170 | 3.347E-09, 3.467E-09, 3.605E-09, 3.763E-09, 3.946E-09, | |||
| 3171 | 4.162E-09, 4.399E-09, 4.677E-09, 4.983E-09, 5.336E-09, | |||
| 3172 | 5.728E-09, 6.168E-09, 6.684E-09, 7.214E-09, 7.861E-09, | |||
| 3173 | 8.620E-09, 9.481E-09, 1.032E-08, 1.135E-08, 1.264E-08, | |||
| 3174 | 1.396E-08, 1.567E-08, 1.740E-08, 1.977E-08, 2.200E-08, | |||
| 3175 | 2.563E-08, 2.935E-08, 3.386E-08, 3.993E-08, 4.828E-08, | |||
| 3176 | 5.714E-08, 6.877E-08, 8.135E-08, 9.779E-08, 1.132E-07, | |||
| 3177 | 1.344E-07, 1.544E-07, 1.820E-07, 2.207E-07, 2.509E-07, | |||
| 3178 | 2.854E-07, 3.026E-07, 3.278E-07, 3.474E-07, 3.693E-07, | |||
| 3179 | 3.930E-07, 4.104E-07, 4.220E-07, 4.439E-07, 4.545E-07, | |||
| 3180 | 4.778E-07, 4.812E-07, 5.018E-07, 4.899E-07, 5.075E-07, | |||
| 3181 | 5.073E-07, 5.171E-07, 5.131E-07, 5.250E-07, 5.617E-07, | |||
| 3182 | 5.846E-07, 6.239E-07, 6.696E-07, 7.398E-07, 8.073E-07, | |||
| 3183 | 9.150E-07, 1.009E-06, 1.116E-06, 1.264E-06, 1.439E-06, | |||
| 3184 | 1.644E-06, 1.856E-06, 2.147E-06, 2.317E-06, 2.713E-06, | |||
| 3185 | 2.882E-06, 2.990E-06, 3.489E-06, 3.581E-06, 4.033E-06, | |||
| 3186 | 4.260E-06, 4.543E-06, 4.840E-06, 4.826E-06, 5.013E-06, | |||
| 3187 | 5.252E-06, 5.277E-06, 5.306E-06, 5.234E-06, 5.111E-06, | |||
| 3188 | 5.134E-06, 4.748E-06, 4.434E-06, 4.109E-06, 3.605E-06, | |||
| 3189 | 3.252E-06, 2.731E-06, 2.369E-06, 1.922E-06, 1.558E-06, | |||
| 3190 | 1.321E-06, 1.058E-06, 8.515E-07, 6.811E-07, 5.431E-07, | |||
| 3191 | 4.348E-07, 3.510E-07, 2.853E-07, 2.344E-07, 1.949E-07, | |||
| 3192 | 1.649E-07, 1.409E-07, 1.232E-07, 1.098E-07, 9.866E-08, | |||
| 3193 | 8.899E-08, 8.135E-08, 7.409E-08, 6.809E-08, 6.237E-08, | |||
| 3194 | 5.728E-08, 5.267E-08, 4.865E-08, 4.482E-08, 4.169E-08, | |||
| 3195 | 3.841E-08, 3.573E-08, 3.304E-08, 3.065E-08, 2.851E-08, | |||
| 3196 | 2.634E-08, 2.448E-08, 2.275E-08, 2.114E-08, 1.965E-08, | |||
| 3197 | 1.830E-08, 1.707E-08, 1.591E-08, 1.484E-08, 1.386E-08, | |||
| 3198 | 1.294E-08, 1.209E-08, 1.131E-08, 1.056E-08, 9.901E-09, | |||
| 3199 | 9.263E-09, 8.680E-09, 8.137E-09, 7.627E-09, 7.158E-09, | |||
| 3200 | 6.715E-09, 6.305E-09, 5.927E-09, 5.568E-09, 5.242E-09, | |||
| 3201 | 4.935E-09, 4.648E-09, 4.383E-09, 4.137E-09, 3.909E-09, | |||
| 3202 | 3.697E-09, 3.500E-09, 3.321E-09, 3.156E-09, 3.006E-09, | |||
| 3203 | 2.868E-09, 2.745E-09, 2.638E-09, 2.545E-09, 2.469E-09, | |||
| 3204 | 2.405E-09, 2.369E-09, 2.344E-09, 2.350E-09, 2.371E-09, | |||
| 3205 | 2.491E-09, 2.535E-09, 2.730E-09, 3.067E-09, 3.322E-09, | |||
| 3206 | 3.630E-09, 4.045E-09, 4.524E-09, 4.981E-09, 5.613E-09, | |||
| 3207 | 6.051E-09, 6.538E-09, 6.892E-09, 7.601E-09, 8.194E-09, | |||
| 3208 | 8.806E-09, 9.450E-09, 9.745E-09, 1.009E-08, 1.017E-08, | |||
| 3209 | 1.039E-08, 1.061E-08, 1.076E-08, 1.086E-08, 1.111E-08, | |||
| 3210 | 1.142E-08, 1.160E-08, 1.174E-08, 1.180E-08, 1.187E-08, | |||
| 3211 | 1.194E-08, 1.192E-08, 1.224E-08, 1.245E-08, 1.246E-08, | |||
| 3212 | 1.318E-08, 1.377E-08, 1.471E-08, 1.582E-08, 1.713E-08, | |||
| 3213 | 1.853E-08, 2.063E-08, 2.270E-08, 2.567E-08, 2.891E-08, | |||
| 3214 | 3.264E-08, 3.744E-08, 4.286E-08, 4.915E-08, 5.623E-08, | |||
| 3215 | 6.336E-08, 7.293E-08, 8.309E-08, 9.319E-08, 1.091E-07, | |||
| 3216 | 1.243E-07, 1.348E-07, 1.449E-07, 1.620E-07, 1.846E-07, | |||
| 3217 | 1.937E-07, 2.040E-07, 2.179E-07, 2.298E-07, 2.433E-07, | |||
| 3218 | 2.439E-07, 2.464E-07, 2.611E-07, 2.617E-07, 2.582E-07, | |||
| 3219 | 2.453E-07, 2.401E-07, 2.349E-07, 2.203E-07, 2.066E-07, | |||
| 3220 | 1.939E-07, 1.780E-07, 1.558E-07, 1.391E-07, 1.203E-07, | |||
| 3221 | 1.048E-07, 9.464E-08, 8.306E-08, 7.239E-08, 6.317E-08, | |||
| 3222 | 5.520E-08, 4.847E-08, 4.282E-08, 3.796E-08, 3.377E-08, | |||
| 3223 | 2.996E-08, 2.678E-08, 2.400E-08, 2.134E-08, 1.904E-08, | |||
| 3224 | 1.705E-08, 1.523E-08, 1.350E-08, 1.204E-08, 1.070E-08, | |||
| 3225 | 9.408E-09, 8.476E-09, 7.470E-09, 6.679E-09, 5.929E-09, | |||
| 3226 | 5.267E-09, 4.711E-09, 4.172E-09, 3.761E-09, 3.288E-09, | |||
| 3227 | 2.929E-09, 2.609E-09, 2.315E-09, 2.042E-09, 1.844E-09, | |||
| 3228 | 1.640E-09, 1.470E-09, 1.310E-09, 1.176E-09, 1.049E-09, | |||
| 3229 | 9.377E-10, 8.462E-10, 7.616E-10, 6.818E-10, 6.119E-10, | |||
| 3230 | 5.558E-10, 5.152E-10, 4.832E-10, 4.546E-10, 4.267E-10, | |||
| 3231 | 4.009E-10, 3.770E-10, 3.546E-10, 3.340E-10, 3.149E-10, | |||
| 3232 | 2.971E-10, 2.805E-10, 2.652E-10, 2.509E-10, 2.377E-10, | |||
| 3233 | 2.255E-10, 2.142E-10, 2.038E-10, 1.943E-10, 1.855E-10, | |||
| 3234 | 1.776E-10, 1.703E-10, 1.640E-10, 1.586E-10, 1.536E-10, | |||
| 3235 | 1.494E-10, 1.466E-10, 1.446E-10, 1.440E-10, 1.439E-10, | |||
| 3236 | 1.455E-10, 1.461E-10, 1.479E-10, 1.514E-10, 1.538E-10, | |||
| 3237 | 1.590E-10, 1.652E-10, 1.750E-10, 1.811E-10, 1.880E-10, | |||
| 3238 | 1.933E-10, 2.027E-10, 2.078E-10, 2.170E-10, 2.249E-10, | |||
| 3239 | 2.323E-10, 2.408E-10, 2.461E-10, 2.536E-10, 2.581E-10, | |||
| 3240 | 2.615E-10, 2.721E-10, 2.782E-10, 2.866E-10, 2.938E-10, | |||
| 3241 | 2.958E-10, 3.011E-10, 3.155E-10, 3.237E-10, 3.589E-10, | |||
| 3242 | 3.838E-10, 4.083E-10, 4.354E-10, 4.745E-10, 5.148E-10, | |||
| 3243 | 5.648E-10, 6.194E-10, 6.748E-10, 7.566E-10, 8.421E-10, | |||
| 3244 | 9.427E-10, 1.042E-09, 1.165E-09, 1.341E-09, 1.518E-09, | |||
| 3245 | 1.686E-09, 2.036E-09, 2.362E-09, 2.811E-09, 3.296E-09, | |||
| 3246 | 4.070E-09, 4.695E-09, 6.152E-09, 7.572E-09, 9.557E-09, | |||
| 3247 | 1.135E-08, 1.279E-08, 1.364E-08, 1.436E-08, 1.540E-08, | |||
| 3248 | 1.672E-08, 1.793E-08, 1.906E-08, 2.036E-08, 2.144E-08, | |||
| 3249 | 2.292E-08, 2.371E-08, 2.493E-08, 2.606E-08, 2.706E-08, | |||
| 3250 | 2.866E-08, 3.036E-08, 3.136E-08, 3.405E-08, 3.665E-08, | |||
| 3251 | 3.837E-08, 4.229E-08, 4.748E-08, 5.320E-08, 5.763E-08, | |||
| 3252 | 6.677E-08, 7.216E-08, 7.716E-08, 8.958E-08, 9.419E-08, | |||
| 3253 | 1.036E-07, 1.108E-07, 1.189E-07, 1.246E-07, 1.348E-07, | |||
| 3254 | 1.310E-07, 1.361E-07, 1.364E-07, 1.363E-07, 1.343E-07, | |||
| 3255 | 1.293E-07, 1.254E-07, 1.235E-07, 1.158E-07, 1.107E-07, | |||
| 3256 | 9.961E-08, 9.011E-08, 7.910E-08, 6.916E-08, 6.338E-08, | |||
| 3257 | 5.564E-08, 4.827E-08, 4.198E-08, 3.695E-08, 3.276E-08, | |||
| 3258 | 2.929E-08, 2.633E-08, 2.391E-08, 2.192E-08, 2.021E-08, | |||
| 3259 | 1.890E-08, 1.772E-08, 1.667E-08, 1.603E-08, 1.547E-08, | |||
| 3260 | 1.537E-08, 1.492E-08, 1.515E-08, 1.479E-08, 1.450E-08, | |||
| 3261 | 1.513E-08, 1.495E-08, 1.529E-08, 1.565E-08, 1.564E-08, | |||
| 3262 | 1.553E-08, 1.569E-08, 1.584E-08, 1.570E-08, 1.538E-08, | |||
| 3263 | 1.531E-08, 1.346E-08, 1.199E-08, 1.044E-08, 8.892E-09, | |||
| 3264 | 7.076E-09, 5.884E-09, 5.039E-09, 4.129E-09, 3.663E-09, | |||
| 3265 | 2.993E-09, 2.622E-09, 2.232E-09, 1.884E-09, 1.569E-09, | |||
| 3266 | 1.348E-09, 1.144E-09, 1.009E-09, 8.833E-10, 7.907E-10, | |||
| 3267 | 7.079E-10, 6.514E-10, 5.823E-10, 5.312E-10, 4.883E-10, | |||
| 3268 | 4.458E-10, 4.094E-10, 3.734E-10, 3.458E-10, 3.205E-10, | |||
| 3269 | 2.962E-10, 2.733E-10, 2.532E-10, 2.351E-10, 2.187E-10, | |||
| 3270 | 2.034E-10, 1.889E-10, 1.764E-10, 1.648E-10, 1.541E-10, | |||
| 3271 | 1.443E-10, 1.355E-10, 1.274E-10, 1.198E-10, 1.133E-10, | |||
| 3272 | 1.071E-10, 1.015E-10, 9.648E-11, 9.195E-11, 8.791E-11, | |||
| 3273 | 8.435E-11, 8.125E-11, 7.859E-11, 7.621E-11, 7.481E-11, | |||
| 3274 | 7.351E-11, 7.228E-11, 7.295E-11, 7.339E-11, 7.588E-11, | |||
| 3275 | 7.701E-11, 7.886E-11, 8.511E-11, 9.061E-11, 9.926E-11, | |||
| 3276 | 1.083E-10, 1.241E-10, 1.469E-10, 1.736E-10, 1.966E-10, | |||
| 3277 | 2.132E-10, 2.280E-10, 2.473E-10, 2.718E-10, 2.922E-10, | |||
| 3278 | 3.128E-10, 3.361E-10, 3.641E-10, 3.910E-10, 4.196E-10, | |||
| 3279 | 4.501E-10, 4.932E-10, 5.258E-10, 5.755E-10, 6.253E-10, | |||
| 3280 | 6.664E-10, 7.344E-10, 7.985E-10, 8.877E-10, 1.005E-09, | |||
| 3281 | 1.118E-09, 1.251E-09, 1.428E-09, 1.610E-09, 1.888E-09, | |||
| 3282 | 2.077E-09, 2.331E-09, 2.751E-09, 3.061E-09, 3.522E-09, | |||
| 3283 | 3.805E-09, 4.181E-09, 4.575E-09, 5.167E-09, 5.634E-09, | |||
| 3284 | 6.007E-09, 6.501E-09, 6.829E-09, 7.211E-09, 7.262E-09, | |||
| 3285 | 7.696E-09, 7.832E-09, 7.799E-09, 7.651E-09, 7.304E-09, | |||
| 3286 | 7.150E-09, 6.977E-09, 6.603E-09, 6.209E-09, 5.690E-09, | |||
| 3287 | 5.432E-09, 4.764E-09, 4.189E-09, 3.640E-09, 3.203E-09, | |||
| 3288 | 2.848E-09, 2.510E-09, 2.194E-09, 1.946E-09, 1.750E-09, | |||
| 3289 | 1.567E-09, 1.426E-09, 1.302E-09, 1.197E-09, 1.109E-09, | |||
| 3290 | 1.035E-09, 9.719E-10, 9.207E-10, 8.957E-10, 8.578E-10, | |||
| 3291 | 8.262E-10, 8.117E-10, 7.987E-10, 7.875E-10, 7.741E-10, | |||
| 3292 | 7.762E-10, 7.537E-10, 7.424E-10, 7.474E-10, 7.294E-10, | |||
| 3293 | 7.216E-10, 7.233E-10, 7.140E-10, 7.085E-10, 6.434E-10, | |||
| 3294 | 5.585E-10, 5.015E-10, 3.956E-10, 3.337E-10, 2.545E-10, | |||
| 3295 | 2.141E-10, 1.761E-10, 1.685E-10, 1.507E-10, 1.241E-10, | |||
| 3296 | 1.081E-10, 9.675E-11, 7.964E-11, 6.930E-11, 5.790E-11, | |||
| 3297 | 5.069E-11, 4.452E-11, 3.970E-11, 3.551E-11, 3.228E-11, | |||
| 3298 | 2.939E-11, 2.682E-11, 2.471E-11, 2.278E-11, 2.106E-11, | |||
| 3299 | 1.950E-11, 1.811E-11, 1.682E-11, 1.563E-11, 1.458E-11, | |||
| 3300 | 1.363E-11, 1.278E-11, 1.200E-11, 1.129E-11, 1.066E-11, | |||
| 3301 | 1.007E-11, 9.545E-12, 9.075E-12, 8.656E-12, 8.285E-12, | |||
| 3302 | 7.958E-12, 7.674E-12, 7.431E-12, 7.227E-12, 7.061E-12, | |||
| 3303 | 6.934E-12, 6.843E-12, 6.790E-12, 6.775E-12, 6.798E-12, | |||
| 3304 | 6.859E-12, 6.960E-12, 7.102E-12, 7.287E-12, 7.517E-12, | |||
| 3305 | 7.795E-12, 8.123E-12, 8.504E-12, 8.945E-12, 9.450E-12, | |||
| 3306 | 1.003E-11, 1.070E-11, 1.148E-11, 1.232E-11, 1.327E-11, | |||
| 3307 | 1.441E-11, 1.535E-11, 1.655E-11, 1.814E-11, 2.020E-11, | |||
| 3308 | 2.307E-11, 2.622E-11, 2.962E-11, 3.369E-11, 3.819E-11, | |||
| 3309 | 4.329E-11, 4.932E-11, 5.589E-11, 6.364E-11, 7.284E-11, | |||
| 3310 | 8.236E-11, 9.447E-11, 1.078E-10, 1.229E-10, 1.417E-10, | |||
| 3311 | 1.614E-10, 1.843E-10, 2.107E-10, 2.406E-10, 2.728E-10, | |||
| 3312 | 3.195E-10, 3.595E-10, 4.153E-10, 4.736E-10, 5.410E-10, | |||
| 3313 | 6.088E-10, 6.769E-10, 7.691E-10, 8.545E-10, 9.621E-10, | |||
| 3314 | 1.047E-09, 1.161E-09, 1.296E-09, 1.424E-09, 1.576E-09, | |||
| 3315 | 1.739E-09, 1.893E-09, 2.080E-09, 2.336E-09, 2.604E-09, | |||
| 3316 | 2.760E-09, 3.001E-09, 3.365E-09, 3.550E-09, 3.895E-09, | |||
| 3317 | 4.183E-09, 4.614E-09, 4.846E-09, 5.068E-09, 5.427E-09, | |||
| 3318 | 5.541E-09, 5.864E-09, 5.997E-09, 5.997E-09, 6.061E-09, | |||
| 3319 | 5.944E-09, 5.855E-09, 5.661E-09, 5.523E-09, 5.374E-09, | |||
| 3320 | 4.940E-09, 4.688E-09, 4.170E-09, 3.913E-09, 3.423E-09, | |||
| 3321 | 2.997E-09, 2.598E-09, 2.253E-09, 1.946E-09, 1.710E-09, | |||
| 3322 | 1.507E-09, 1.336E-09, 1.190E-09, 1.068E-09, 9.623E-10, | |||
| 3323 | 8.772E-10, 8.007E-10, 7.420E-10, 6.884E-10, 6.483E-10, | |||
| 3324 | 6.162E-10, 5.922E-10, 5.688E-10, 5.654E-10, 5.637E-10, | |||
| 3325 | 5.701E-10, 5.781E-10, 5.874E-10, 6.268E-10, 6.357E-10, | |||
| 3326 | 6.525E-10, 7.137E-10, 7.441E-10, 8.024E-10, 8.485E-10, | |||
| 3327 | 9.143E-10, 9.536E-10, 9.717E-10, 1.018E-09, 1.042E-09, | |||
| 3328 | 1.054E-09, 1.092E-09, 1.093E-09, 1.072E-09, 1.046E-09, | |||
| 3329 | 9.283E-10, 8.053E-10, 6.680E-10, 5.630E-10, 4.933E-10, | |||
| 3330 | 3.488E-10, 3.324E-10, 2.826E-10, 2.429E-10, 2.051E-10, | |||
| 3331 | 1.679E-10, 1.411E-10, 1.240E-10, 1.098E-10, 9.668E-11, | |||
| 3332 | 8.529E-11, 7.848E-11, 7.098E-11, 6.117E-11, 5.246E-11, | |||
| 3333 | 4.521E-11, 4.059E-11, 3.783E-11, 3.502E-11, 3.271E-11, | |||
| 3334 | 2.956E-11, 2.636E-11, 2.464E-11, 2.190E-11, 1.986E-11, | |||
| 3335 | 1.791E-11, 1.638E-11, 1.491E-11, 1.383E-11, 1.271E-11, | |||
| 3336 | 1.166E-11, 1.082E-11, 1.002E-11, 9.317E-12, 8.697E-12, | |||
| 3337 | 8.157E-12, 7.678E-12, 7.252E-12, 6.874E-12, 6.539E-12, | |||
| 3338 | 6.243E-12, 5.985E-12, 5.763E-12, 5.575E-12, 5.421E-12, | |||
| 3339 | 5.300E-12, 5.212E-12, 5.157E-12, 5.138E-12, 5.156E-12, | |||
| 3340 | 5.214E-12, 5.313E-12, 5.457E-12, 5.686E-12, 5.953E-12, | |||
| 3341 | 6.284E-12, 6.856E-12, 7.351E-12, 8.006E-12, 8.957E-12, | |||
| 3342 | 1.031E-11, 1.170E-11, 1.345E-11, 1.623E-11, 1.999E-11, | |||
| 3343 | 2.507E-11, 3.004E-11, 3.378E-11, 3.688E-11, 4.118E-11, | |||
| 3344 | 4.569E-11, 5.025E-11, 5.660E-11, 6.231E-11, 6.881E-11, | |||
| 3345 | 7.996E-11, 8.526E-11, 9.694E-11, 1.106E-10, 1.222E-10, | |||
| 3346 | 1.355E-10, 1.525E-10, 1.775E-10, 1.924E-10, 2.181E-10, | |||
| 3347 | 2.379E-10, 2.662E-10, 2.907E-10, 3.154E-10, 3.366E-10, | |||
| 3348 | 3.579E-10, 3.858E-10, 4.046E-10, 4.196E-10, 4.166E-10, | |||
| 3349 | 4.457E-10, 4.466E-10, 4.404E-10, 4.337E-10, 4.150E-10, | |||
| 3350 | 4.083E-10, 3.910E-10, 3.723E-10, 3.514E-10, 3.303E-10, | |||
| 3351 | 2.847E-10, 2.546E-10, 2.230E-10, 1.994E-10, 1.733E-10, | |||
| 3352 | 1.488E-10, 1.297E-10, 1.144E-10, 1.004E-10, 8.741E-11, | |||
| 3353 | 7.928E-11, 7.034E-11, 6.323E-11, 5.754E-11, 5.250E-11, | |||
| 3354 | 4.850E-11, 4.502E-11, 4.286E-11, 4.028E-11, 3.899E-11, | |||
| 3355 | 3.824E-11, 3.761E-11, 3.804E-11, 3.839E-11, 3.845E-11, | |||
| 3356 | 4.244E-11, 4.382E-11, 4.582E-11, 4.847E-11, 5.209E-11, | |||
| 3357 | 5.384E-11, 5.887E-11, 6.371E-11, 6.737E-11, 7.168E-11, | |||
| 3358 | 7.415E-11, 7.827E-11, 8.037E-11, 8.120E-11, 8.154E-11, | |||
| 3359 | 7.981E-11, 7.783E-11, 6.900E-11, 6.030E-11, 4.900E-11, | |||
| 3360 | 3.878E-11, 3.068E-11, 2.533E-11, 2.255E-11, 2.056E-11, | |||
| 3361 | 1.569E-11, 1.398E-11, 1.149E-11, 9.249E-12, 7.706E-12, | |||
| 3362 | 6.436E-12, 5.514E-12, 4.782E-12, 4.202E-12, 3.721E-12, | |||
| 3363 | 3.336E-12, 3.015E-12, 2.744E-12, 2.512E-12, 2.312E-12, | |||
| 3364 | 2.138E-12, 1.987E-12, 1.855E-12, 1.741E-12, 1.642E-12, | |||
| 3365 | 1.557E-12, 1.483E-12, 1.422E-12, 1.370E-12, 1.329E-12, | |||
| 3366 | 1.297E-12, 1.274E-12, 1.259E-12, 1.253E-12, 1.255E-12, | |||
| 3367 | 1.266E-12, 1.284E-12, 1.312E-12, 1.348E-12, 1.393E-12, | |||
| 3368 | 1.448E-12, 1.512E-12, 1.587E-12, 1.672E-12, 1.770E-12, | |||
| 3369 | 1.880E-12, 1.990E-12, 2.110E-12, 2.274E-12, 2.516E-12, | |||
| 3370 | 2.844E-12, 3.231E-12, 3.661E-12, 4.153E-12, 4.717E-12, | |||
| 3371 | 5.360E-12, 6.094E-12, 6.930E-12, 7.882E-12, 8.966E-12, | |||
| 3372 | 1.020E-11, 1.162E-11, 1.324E-11, 1.510E-11, 1.720E-11, | |||
| 3373 | 1.965E-11, 2.237E-11, 2.560E-11, 2.927E-11, 3.371E-11, | |||
| 3374 | 3.842E-11, 4.429E-11, 5.139E-11, 5.798E-11, 6.697E-11, | |||
| 3375 | 7.626E-11, 8.647E-11, 1.022E-10, 1.136E-10, 1.300E-10, | |||
| 3376 | 1.481E-10, 1.672E-10, 1.871E-10, 2.126E-10, 2.357E-10, | |||
| 3377 | 2.583E-10, 2.997E-10, 3.289E-10, 3.702E-10, 4.012E-10, | |||
| 3378 | 4.319E-10, 4.527E-10, 5.001E-10, 5.448E-10, 5.611E-10, | |||
| 3379 | 5.760E-10, 5.965E-10, 6.079E-10, 6.207E-10, 6.276E-10, | |||
| 3380 | 6.222E-10, 6.137E-10, 6.000E-10, 5.814E-10, 5.393E-10, | |||
| 3381 | 5.350E-10, 4.947E-10, 4.629E-10, 4.117E-10, 3.712E-10, | |||
| 3382 | 3.372E-10, 2.923E-10, 2.550E-10, 2.232E-10, 1.929E-10, | |||
| 3383 | 1.679E-10, 1.460E-10, 1.289E-10, 1.130E-10, 9.953E-11, | |||
| 3384 | 8.763E-11, 7.760E-11, 6.900E-11, 6.160E-11, 5.525E-11, | |||
| 3385 | 4.958E-11, 4.489E-11, 4.072E-11, 3.728E-11, 3.438E-11, | |||
| 3386 | 3.205E-11, 3.006E-11, 2.848E-11, 2.766E-11, 2.688E-11, | |||
| 3387 | 2.664E-11, 2.670E-11, 2.696E-11, 2.786E-11, 2.861E-11, | |||
| 3388 | 3.009E-11, 3.178E-11, 3.389E-11, 3.587E-11, 3.819E-11, | |||
| 3389 | 4.054E-11, 4.417E-11, 4.703E-11, 5.137E-11, 5.460E-11, | |||
| 3390 | 6.055E-11, 6.333E-11, 6.773E-11, 7.219E-11, 7.717E-11, | |||
| 3391 | 8.131E-11, 8.491E-11, 8.574E-11, 9.010E-11, 9.017E-11, | |||
| 3392 | 8.999E-11, 8.959E-11, 8.838E-11, 8.579E-11, 8.162E-11, | |||
| 3393 | 8.098E-11, 7.472E-11, 7.108E-11, 6.559E-11, 5.994E-11, | |||
| 3394 | 5.172E-11, 4.424E-11, 3.951E-11, 3.340E-11, 2.902E-11, | |||
| 3395 | 2.541E-11, 2.215E-11, 1.945E-11, 1.716E-11, 1.503E-11, | |||
| 3396 | 1.339E-11, 1.185E-11, 1.050E-11, 9.336E-12, 8.307E-12, | |||
| 3397 | 7.312E-12, 6.550E-12, 5.836E-12, 5.178E-12, 4.600E-12, | |||
| 3398 | 4.086E-12, 3.639E-12, 3.247E-12, 2.904E-12, 2.604E-12, | |||
| 3399 | 2.341E-12, 2.112E-12, 1.914E-12, 1.744E-12, 1.598E-12, | |||
| 3400 | 1.476E-12, 1.374E-12, 1.293E-12, 1.230E-12, 1.185E-12, | |||
| 3401 | 1.158E-12, 1.147E-12, 1.154E-12, 1.177E-12, 1.219E-12, | |||
| 3402 | 1.280E-12, 1.360E-12, 1.463E-12, 1.591E-12, 1.750E-12, | |||
| 3403 | 1.940E-12, 2.156E-12, 2.430E-12, 2.748E-12, 3.052E-12, | |||
| 3404 | 3.533E-12, 3.967E-12, 4.471E-12, 5.041E-12, 5.860E-12, | |||
| 3405 | 6.664E-12, 7.522E-12, 8.342E-12, 9.412E-12, 1.072E-11, | |||
| 3406 | 1.213E-11, 1.343E-11, 1.496E-11, 1.664E-11, 1.822E-11, | |||
| 3407 | 2.029E-11, 2.233E-11, 2.457E-11, 2.709E-11, 2.928E-11, | |||
| 3408 | 3.115E-11, 3.356E-11, 3.592E-11, 3.818E-11, 3.936E-11, | |||
| 3409 | 4.061E-11, 4.149E-11, 4.299E-11, 4.223E-11, 4.251E-11, | |||
| 3410 | 4.287E-11, 4.177E-11, 4.094E-11, 3.942E-11, 3.772E-11, | |||
| 3411 | 3.614E-11, 3.394E-11, 3.222E-11, 2.791E-11, 2.665E-11, | |||
| 3412 | 2.309E-11, 2.032E-11, 1.740E-11, 1.535E-11, 1.323E-11, | |||
| 3413 | 1.151E-11, 9.803E-12, 8.650E-12, 7.540E-12, 6.619E-12, | |||
| 3414 | 5.832E-12, 5.113E-12, 4.503E-12, 3.975E-12, 3.520E-12, | |||
| 3415 | 3.112E-12, 2.797E-12, 2.500E-12, 2.240E-12, 2.013E-12, | |||
| 3416 | 1.819E-12, 1.653E-12, 1.513E-12, 1.395E-12, 1.299E-12, | |||
| 3417 | 1.225E-12, 1.168E-12, 1.124E-12, 1.148E-12, 1.107E-12, | |||
| 3418 | 1.128E-12, 1.169E-12, 1.233E-12, 1.307E-12, 1.359E-12, | |||
| 3419 | 1.543E-12, 1.686E-12, 1.794E-12, 2.028E-12, 2.210E-12, | |||
| 3420 | 2.441E-12, 2.653E-12, 2.828E-12, 3.093E-12, 3.280E-12, | |||
| 3421 | 3.551E-12, 3.677E-12, 3.803E-12, 3.844E-12, 4.068E-12, | |||
| 3422 | 4.093E-12, 4.002E-12, 3.904E-12, 3.624E-12, 3.633E-12, | |||
| 3423 | 3.622E-12, 3.443E-12, 3.184E-12, 2.934E-12, 2.476E-12, | |||
| 3424 | 2.212E-12, 1.867E-12, 1.594E-12, 1.370E-12, 1.192E-12, | |||
| 3425 | 1.045E-12, 9.211E-13, 8.170E-13, 7.290E-13, 6.550E-13, | |||
| 3426 | 5.929E-13, 5.415E-13, 4.995E-13, 4.661E-13, 4.406E-13, | |||
| 3427 | 4.225E-13, 4.116E-13, 4.075E-13, 4.102E-13, 4.198E-13, | |||
| 3428 | 4.365E-13, 4.606E-13, 4.925E-13, 5.326E-13, 5.818E-13, | |||
| 3429 | 6.407E-13, 7.104E-13, 7.920E-13, 8.868E-13, 9.964E-13, | |||
| 3430 | 1.123E-12, 1.268E-12, 1.434E-12, 1.626E-12, 1.848E-12, | |||
| 3431 | 2.107E-12, 2.422E-12, 2.772E-12, 3.145E-12, 3.704E-12, | |||
| 3432 | 4.270E-12, 4.721E-12, 5.361E-12, 6.083E-12, 7.095E-12, | |||
| 3433 | 7.968E-12, 9.228E-12, 1.048E-11, 1.187E-11, 1.336E-11, | |||
| 3434 | 1.577E-11, 1.772E-11, 2.017E-11, 2.250E-11, 2.630E-11, | |||
| 3435 | 2.911E-11, 3.356E-11, 3.820E-11, 4.173E-11, 4.811E-11, | |||
| 3436 | 5.254E-11, 5.839E-11, 6.187E-11, 6.805E-11, 7.118E-11, | |||
| 3437 | 7.369E-11, 7.664E-11, 7.794E-11, 7.947E-11, 8.036E-11, | |||
| 3438 | 7.954E-11, 7.849E-11, 7.518E-11, 7.462E-11, 6.926E-11, | |||
| 3439 | 6.531E-11, 6.197E-11, 5.421E-11, 4.777E-11, 4.111E-11, | |||
| 3440 | 3.679E-11, 3.166E-11, 2.786E-11, 2.436E-11, 2.144E-11, | |||
| 3441 | 1.859E-11, 1.628E-11, 1.414E-11, 1.237E-11, 1.093E-11, | |||
| 3442 | 9.558e-12 }; // end section diff to MT 1.0 | |||
| 3443 | ||||
| 3444 | // H2O self continuum parameters at T=260 K | |||
| 3445 | // date of last update: 10/29/18 | |||
| 3446 | // units of (CM**3/MOL)*1.E-20 | |||
| 3447 | const Numeric SL260_ckd_mt_320_v1 = -20.0; | |||
| 3448 | const Numeric SL260_ckd_mt_320_v2 = 20000.0; | |||
| 3449 | const Numeric SL260_ckd_mt_320_dv = 10.0; | |||
| 3450 | const int SL260_ckd_mt_320_npt = 2003; | |||
| 3451 | const double SL260_ckd_mt_320[SL260_ckd_mt_320_npt+addF77fields] = { | |||
| 3452 | 0.000e0, 2.749e-01, 2.732e-01, | |||
| 3453 | 2.752e-01, 2.732e-01, 2.749e-01, 2.676e-01, 2.667e-01, | |||
| 3454 | 2.545e-01, 2.497e-01, 2.327e-01, 2.218e-01, 2.036e-01, | |||
| 3455 | 1.825e-01, 1.694e-01, 1.497e-01, 1.353e-01, 1.210e-01, | |||
| 3456 | 1.014e-01, 9.405e-02, 7.848e-02, 7.195e-02, 6.246e-02, | |||
| 3457 | 5.306e-02, 4.853e-02, 4.138e-02, 3.735e-02, 3.171e-02, | |||
| 3458 | 2.785e-02, 2.431e-02, 2.111e-02, 1.845e-02, 1.640e-02, | |||
| 3459 | 1.405e-02, 1.255e-02, 1.098e-02, 9.797e-03, 8.646e-03, | |||
| 3460 | 7.779e-03, 6.898e-03, 6.099e-03, 5.453e-03, 4.909e-03, | |||
| 3461 | 4.413e-03, 3.959e-03, 3.581e-03, 3.199e-03, 2.871e-03, | |||
| 3462 | 2.583e-03, 2.330e-03, 2.086e-03, 1.874e-03, 1.684e-03, | |||
| 3463 | 1.512e-03, 1.361e-03, 1.225e-03, 1.100e-03, 9.890e-04, | |||
| 3464 | 8.916e-04, 8.039e-04, 7.256e-04, 6.545e-04, 5.918e-04, | |||
| 3465 | 5.359e-04, 4.867e-04, 4.426e-04, 4.033e-04, 3.682e-04, | |||
| 3466 | 3.366e-04, 3.085e-04, 2.833e-04, 2.605e-04, 2.403e-04, | |||
| 3467 | 2.221e-04, 2.055e-04, 1.908e-04, 1.774e-04, 1.653e-04, | |||
| 3468 | 1.544e-04, 1.443e-04, 1.351e-04, 1.267e-04, 1.190e-04, | |||
| 3469 | 1.119e-04, 1.053e-04, 9.922e-05, 9.355e-05, 8.831e-05, | |||
| 3470 | 8.339e-05, 7.878e-05, 7.449e-05, 7.043e-05, 6.664e-05, | |||
| 3471 | 6.307e-05, 5.969e-05, 5.654e-05, 5.357e-05, 5.075e-05, | |||
| 3472 | 4.810e-05, 4.560e-05, 4.322e-05, 4.102e-05, 3.892e-05, | |||
| 3473 | 3.696e-05, 3.511e-05, 3.339e-05, 3.177e-05, 3.026e-05, | |||
| 3474 | 2.886e-05, 2.756e-05, 2.636e-05, 2.527e-05, 2.427e-05, | |||
| 3475 | 2.337e-05, 2.257e-05, 2.185e-05, 2.127e-05, 2.080e-05, | |||
| 3476 | 2.041e-05, 2.013e-05, 2.000e-05, 1.997e-05, 2.009e-05, | |||
| 3477 | 2.031e-05, 2.068e-05, 2.124e-05, 2.189e-05, 2.267e-05, | |||
| 3478 | 2.364e-05, 2.463e-05, 2.618e-05, 2.774e-05, 2.937e-05, | |||
| 3479 | 3.144e-05, 3.359e-05, 3.695e-05, 4.002e-05, 4.374e-05, | |||
| 3480 | 4.947e-05, 5.431e-05, 6.281e-05, 7.169e-05, 8.157e-05, | |||
| 3481 | 9.728e-05, 1.079e-04, 1.337e-04, 1.442e-04, 1.683e-04, | |||
| 3482 | 1.879e-04, 2.223e-04, 2.425e-04, 2.838e-04, 3.143e-04, | |||
| 3483 | 3.527e-04, 4.012e-04, 4.237e-04, 4.747e-04, 5.057e-04, | |||
| 3484 | 5.409e-04, 5.734e-04, 5.944e-04, 6.077e-04, 6.175e-04, | |||
| 3485 | 6.238e-04, 6.226e-04, 6.248e-04, 6.192e-04, 6.098e-04, | |||
| 3486 | 5.818e-04, 5.709e-04, 5.465e-04, 5.043e-04, 4.699e-04, | |||
| 3487 | 4.294e-04, 3.984e-04, 3.672e-04, 3.152e-04, 2.883e-04, | |||
| 3488 | 2.503e-04, 2.211e-04, 1.920e-04, 1.714e-04, 1.485e-04, | |||
| 3489 | 1.358e-04, 1.156e-04, 1.021e-04, 8.887e-05, 7.842e-05, | |||
| 3490 | 7.120e-05, 6.186e-05, 5.730e-05, 4.792e-05, 4.364e-05, | |||
| 3491 | 3.720e-05, 3.280e-05, 2.946e-05, 2.591e-05, 2.261e-05, | |||
| 3492 | 2.048e-05, 1.813e-05, 1.630e-05, 1.447e-05, 1.282e-05, // section diff to MTCKD 1.00 | |||
| 3493 | 1.156E-05, 1.072E-05, 9.922E-06, 8.919E-06, 7.974E-06, | |||
| 3494 | 7.050E-06, 6.301E-06, 5.559E-06, 4.978E-06, 4.371E-06, | |||
| 3495 | 3.941E-06, 3.479E-06, 3.119E-06, 2.795E-06, 2.624E-06, | |||
| 3496 | 2.458E-06, 2.321E-06, 2.192E-06, 2.077E-06, 1.966E-06, | |||
| 3497 | 1.863E-06, 1.775E-06, 1.691E-06, 1.617E-06, 1.545E-06, | |||
| 3498 | 1.484E-06, 1.422E-06, 1.371E-06, 1.320E-06, 1.275E-06, | |||
| 3499 | 1.233E-06, 1.187E-06, 1.145E-06, 1.118E-06, 1.082E-06, | |||
| 3500 | 1.048E-06, 1.020E-06, 9.889E-07, 9.649E-07, 9.368E-07, | |||
| 3501 | 9.174E-07, 8.960E-07, 8.763E-07, 8.566E-07, 8.381E-07, | |||
| 3502 | 8.192E-07, 8.033E-07, 7.864E-07, 7.715E-07, 7.563E-07, | |||
| 3503 | 7.429E-07, 7.282E-07, 7.149E-07, 7.011E-07, 6.901E-07, | |||
| 3504 | 6.771E-07, 6.671E-07, 6.577E-07, 6.476E-07, 6.376E-07, | |||
| 3505 | 6.313E-07, 6.233E-07, 6.171E-07, 6.163E-07, 6.162E-07, | |||
| 3506 | 6.186E-07, 6.241E-07, 6.337E-07, 6.420E-07, 6.421E-07, | |||
| 3507 | 6.368E-07, 6.269E-07, 6.141E-07, 6.023E-07, 5.886E-07, | |||
| 3508 | 5.730E-07, 5.601E-07, 5.496E-07, 5.414E-07, 5.354E-07, | |||
| 3509 | 5.285E-07, 5.233E-07, 5.199E-07, 5.168E-07, 5.145E-07, | |||
| 3510 | 5.125E-07, 5.112E-07, 5.125E-07, 5.135E-07, 5.209E-07, | |||
| 3511 | 5.256E-07, 5.357E-07, 5.503E-07, 5.636E-07, 5.891E-07, | |||
| 3512 | 6.194E-07, 6.511E-07, 6.915E-07, 7.401E-07, 8.004E-07, | |||
| 3513 | 8.606E-07, 9.087E-07, 1.003E-06, 1.043E-06, 1.190E-06, | |||
| 3514 | 1.293E-06, 1.398E-06, 1.508E-06, 1.649E-06, 1.735E-06, | |||
| 3515 | 1.852E-06, 1.955E-06, 2.056E-06, 2.079E-06, 2.127E-06, | |||
| 3516 | 2.117E-06, 2.109E-06, 2.101E-06, 2.122E-06, 2.097E-06, | |||
| 3517 | 2.142E-06, 2.139E-06, 2.138E-06, 2.097E-06, 2.069E-06, | |||
| 3518 | 2.072E-06, 2.038E-06, 2.020E-06, 2.052E-06, 2.046E-06, | |||
| 3519 | 2.077E-06, 2.103E-06, 2.163E-06, 2.244E-06, 2.388E-06, | |||
| 3520 | 2.552E-06, 2.773E-06, 3.067E-06, 3.360E-06, 3.714E-06, | |||
| 3521 | 4.172E-06, 4.643E-06, 5.116E-06, 5.831E-06, 6.522E-06, | |||
| 3522 | 7.478E-06, 8.312E-06, 9.407E-06, 1.051E-05, 1.207E-05, | |||
| 3523 | 1.359E-05, 1.568E-05, 1.759E-05, 2.029E-05, 2.284E-05, | |||
| 3524 | 2.602E-05, 2.940E-05, 3.483E-05, 3.928E-05, 4.618E-05, | |||
| 3525 | 5.240E-05, 6.132E-05, 7.183E-05, 8.521E-05, 9.111E-05, | |||
| 3526 | 1.070E-04, 1.184E-04, 1.264E-04, 1.475E-04, 1.612E-04, | |||
| 3527 | 1.704E-04, 1.818E-04, 1.924E-04, 1.994E-04, 2.061E-04, | |||
| 3528 | 2.180E-04, 2.187E-04, 2.200E-04, 2.196E-04, 2.131E-04, | |||
| 3529 | 2.015E-04, 1.988E-04, 1.847E-04, 1.729E-04, 1.597E-04, | |||
| 3530 | 1.373E-04, 1.262E-04, 1.087E-04, 9.439E-05, 8.061E-05, | |||
| 3531 | 7.093E-05, 6.049E-05, 5.120E-05, 4.435E-05, 3.817E-05, | |||
| 3532 | 3.340E-05, 2.927E-05, 2.573E-05, 2.291E-05, 2.040E-05, | |||
| 3533 | 1.827E-05, 1.636E-05, 1.463E-05, 1.309E-05, 1.170E-05, | |||
| 3534 | 1.047E-05, 9.315E-06, 8.328E-06, 7.458E-06, 6.665E-06, | |||
| 3535 | 5.940E-06, 5.316E-06, 4.752E-06, 4.252E-06, 3.825E-06, | |||
| 3536 | 3.421E-06, 3.064E-06, 2.746E-06, 2.465E-06, 2.216E-06, | |||
| 3537 | 1.990E-06, 1.790E-06, 1.609E-06, 1.449E-06, 1.306E-06, | |||
| 3538 | 1.171E-06, 1.056E-06, 9.738E-07, 9.212E-07, 8.894E-07, | |||
| 3539 | 8.561E-07, 8.183E-07, 7.824E-07, 7.484E-07, 7.168E-07, | |||
| 3540 | 6.872E-07, 6.590E-07, 6.325E-07, 6.070E-07, 5.833E-07, | |||
| 3541 | 5.610E-07, 5.400E-07, 5.197E-07, 5.005E-07, 4.823E-07, | |||
| 3542 | 4.652E-07, 4.483E-07, 4.329E-07, 4.177E-07, 4.029E-07, | |||
| 3543 | 3.888E-07, 3.749E-07, 3.618E-07, 3.492E-07, 3.377E-07, | |||
| 3544 | 3.269E-07, 3.166E-07, 3.081E-07, 3.010E-07, 2.947E-07, | |||
| 3545 | 2.890E-07, 2.844E-07, 2.789E-07, 2.731E-07, 2.670E-07, | |||
| 3546 | 2.604E-07, 2.525E-07, 2.444E-07, 2.384E-07, 2.328E-07, | |||
| 3547 | 2.280E-07, 2.230E-07, 2.183E-07, 2.144E-07, 2.105E-07, | |||
| 3548 | 2.073E-07, 2.046E-07, 2.022E-07, 2.002E-07, 1.985E-07, | |||
| 3549 | 1.975E-07, 1.965E-07, 1.960E-07, 1.954E-07, 1.954E-07, | |||
| 3550 | 1.960E-07, 1.971E-07, 1.984E-07, 2.003E-07, 2.026E-07, | |||
| 3551 | 2.058E-07, 2.099E-07, 2.142E-07, 2.171E-07, 2.206E-07, | |||
| 3552 | 2.312E-07, 2.523E-07, 2.834E-07, 3.195E-07, 3.587E-07, | |||
| 3553 | 4.015E-07, 4.497E-07, 5.049E-07, 5.665E-07, 6.366E-07, | |||
| 3554 | 7.121E-07, 7.996E-07, 8.946E-07, 1.002E-06, 1.117E-06, | |||
| 3555 | 1.262E-06, 1.416E-06, 1.611E-06, 1.807E-06, 2.056E-06, | |||
| 3556 | 2.351E-06, 2.769E-06, 3.138E-06, 3.699E-06, 4.386E-06, | |||
| 3557 | 5.041E-06, 6.074E-06, 6.812E-06, 7.790E-06, 8.855E-06, | |||
| 3558 | 1.014E-05, 1.095E-05, 1.245E-05, 1.316E-05, 1.390E-05, | |||
| 3559 | 1.504E-05, 1.583E-05, 1.617E-05, 1.652E-05, 1.713E-05, | |||
| 3560 | 1.724E-05, 1.715E-05, 1.668E-05, 1.629E-05, 1.552E-05, | |||
| 3561 | 1.478E-05, 1.340E-05, 1.245E-05, 1.121E-05, 9.575E-06, | |||
| 3562 | 8.956E-06, 7.345E-06, 6.597E-06, 5.612E-06, 4.818E-06, | |||
| 3563 | 4.165E-06, 3.579E-06, 3.041E-06, 2.623E-06, 2.290E-06, | |||
| 3564 | 1.984E-06, 1.748E-06, 1.534E-06, 1.369E-06, 1.219E-06, | |||
| 3565 | 1.092E-06, 9.800E-07, 8.762E-07, 7.896E-07, 7.104E-07, | |||
| 3566 | 6.364E-07, 5.691E-07, 5.107E-07, 4.575E-07, 4.090E-07, | |||
| 3567 | 3.667E-07, 3.287E-07, 2.931E-07, 2.633E-07, 2.356E-07, | |||
| 3568 | 2.111E-07, 1.895E-07, 1.697E-07, 1.525E-07, 1.369E-07, | |||
| 3569 | 1.233E-07, 1.114E-07, 9.988E-08, 9.004E-08, 8.149E-08, | |||
| 3570 | 7.311E-08, 6.587E-08, 6.014E-08, 5.618E-08, 5.320E-08, | |||
| 3571 | 5.052E-08, 4.768E-08, 4.514E-08, 4.267E-08, 4.032E-08, | |||
| 3572 | 3.815E-08, 3.605E-08, 3.409E-08, 3.219E-08, 3.038E-08, | |||
| 3573 | 2.869E-08, 2.710E-08, 2.563E-08, 2.418E-08, 2.288E-08, | |||
| 3574 | 2.166E-08, 2.051E-08, 1.945E-08, 1.844E-08, 1.745E-08, | |||
| 3575 | 1.650E-08, 1.558E-08, 1.471E-08, 1.387E-08, 1.308E-08, | |||
| 3576 | 1.235E-08, 1.169E-08, 1.107E-08, 1.050E-08, 9.963E-09, | |||
| 3577 | 9.461E-09, 9.004E-09, 8.580E-09, 8.191E-09, 7.835E-09, | |||
| 3578 | 7.525E-09, 7.242E-09, 7.004E-09, 6.798E-09, 6.617E-09, | |||
| 3579 | 6.463E-09, 6.355E-09, 6.267E-09, 6.194E-09, 6.156E-09, | |||
| 3580 | 6.144E-09, 6.159E-09, 6.210E-09, 6.288E-09, 6.398E-09, | |||
| 3581 | 6.536E-09, 6.719E-09, 6.929E-09, 7.176E-09, 7.459E-09, | |||
| 3582 | 7.787E-09, 8.147E-09, 8.573E-09, 9.024E-09, 9.547E-09, | |||
| 3583 | 1.011E-08, 1.073E-08, 1.146E-08, 1.217E-08, 1.306E-08, | |||
| 3584 | 1.411E-08, 1.525E-08, 1.637E-08, 1.776E-08, 1.958E-08, | |||
| 3585 | 2.136E-08, 2.372E-08, 2.612E-08, 2.944E-08, 3.249E-08, | |||
| 3586 | 3.740E-08, 4.244E-08, 4.845E-08, 5.630E-08, 6.728E-08, | |||
| 3587 | 7.908E-08, 9.511E-08, 1.128E-07, 1.358E-07, 1.587E-07, | |||
| 3588 | 1.904E-07, 2.224E-07, 2.660E-07, 3.278E-07, 3.775E-07, | |||
| 3589 | 4.355E-07, 4.672E-07, 5.110E-07, 5.461E-07, 5.828E-07, | |||
| 3590 | 6.233E-07, 6.509E-07, 6.672E-07, 6.969E-07, 7.104E-07, | |||
| 3591 | 7.439E-07, 7.463E-07, 7.708E-07, 7.466E-07, 7.668E-07, | |||
| 3592 | 7.549E-07, 7.586E-07, 7.384E-07, 7.439E-07, 7.785E-07, | |||
| 3593 | 7.915E-07, 8.310E-07, 8.745E-07, 9.558E-07, 1.038E-06, | |||
| 3594 | 1.173E-06, 1.304E-06, 1.452E-06, 1.671E-06, 1.931E-06, | |||
| 3595 | 2.239E-06, 2.578E-06, 3.032E-06, 3.334E-06, 3.980E-06, | |||
| 3596 | 4.300E-06, 4.518E-06, 5.321E-06, 5.508E-06, 6.211E-06, | |||
| 3597 | 6.590E-06, 7.046E-06, 7.555E-06, 7.558E-06, 7.875E-06, | |||
| 3598 | 8.319E-06, 8.433E-06, 8.590E-06, 8.499E-06, 8.284E-06, | |||
| 3599 | 8.276E-06, 7.587E-06, 7.014E-06, 6.397E-06, 5.520E-06, | |||
| 3600 | 4.888E-06, 4.024E-06, 3.433E-06, 2.726E-06, 2.169E-06, | |||
| 3601 | 1.811E-06, 1.438E-06, 1.156E-06, 9.272E-07, 7.455E-07, | |||
| 3602 | 6.056E-07, 4.980E-07, 4.116E-07, 3.425E-07, 2.878E-07, | |||
| 3603 | 2.455E-07, 2.114E-07, 1.862E-07, 1.667E-07, 1.507E-07, | |||
| 3604 | 1.370E-07, 1.260E-07, 1.153E-07, 1.065E-07, 9.812E-08, | |||
| 3605 | 9.045E-08, 8.334E-08, 7.719E-08, 7.133E-08, 6.653E-08, | |||
| 3606 | 6.160E-08, 5.753E-08, 5.349E-08, 5.005E-08, 4.693E-08, | |||
| 3607 | 4.388E-08, 4.127E-08, 3.883E-08, 3.653E-08, 3.443E-08, | |||
| 3608 | 3.256E-08, 3.075E-08, 2.899E-08, 2.735E-08, 2.586E-08, | |||
| 3609 | 2.443E-08, 2.305E-08, 2.177E-08, 2.049E-08, 1.938E-08, | |||
| 3610 | 1.833E-08, 1.734E-08, 1.638E-08, 1.548E-08, 1.464E-08, | |||
| 3611 | 1.386E-08, 1.310E-08, 1.239E-08, 1.173E-08, 1.110E-08, | |||
| 3612 | 1.051E-08, 9.947E-09, 9.414E-09, 8.911E-09, 8.435E-09, | |||
| 3613 | 7.989E-09, 7.567E-09, 7.174E-09, 6.804E-09, 6.460E-09, | |||
| 3614 | 6.132E-09, 5.828E-09, 5.550E-09, 5.286E-09, 5.049E-09, | |||
| 3615 | 4.831E-09, 4.658E-09, 4.505E-09, 4.413E-09, 4.362E-09, | |||
| 3616 | 4.489E-09, 4.487E-09, 4.761E-09, 5.278E-09, 5.630E-09, | |||
| 3617 | 6.056E-09, 6.633E-09, 7.337E-09, 7.954E-09, 8.869E-09, | |||
| 3618 | 9.500E-09, 1.027E-08, 1.087E-08, 1.204E-08, 1.304E-08, | |||
| 3619 | 1.413E-08, 1.529E-08, 1.586E-08, 1.649E-08, 1.661E-08, | |||
| 3620 | 1.703E-08, 1.741E-08, 1.766E-08, 1.779E-08, 1.816E-08, | |||
| 3621 | 1.866E-08, 1.889E-08, 1.904E-08, 1.897E-08, 1.893E-08, | |||
| 3622 | 1.888E-08, 1.868E-08, 1.895E-08, 1.899E-08, 1.876E-08, | |||
| 3623 | 1.960E-08, 2.020E-08, 2.121E-08, 2.239E-08, 2.379E-08, | |||
| 3624 | 2.526E-08, 2.766E-08, 2.994E-08, 3.332E-08, 3.703E-08, | |||
| 3625 | 4.158E-08, 4.774E-08, 5.499E-08, 6.355E-08, 7.349E-08, | |||
| 3626 | 8.414E-08, 9.846E-08, 1.143E-07, 1.307E-07, 1.562E-07, | |||
| 3627 | 1.817E-07, 2.011E-07, 2.192E-07, 2.485E-07, 2.867E-07, | |||
| 3628 | 3.035E-07, 3.223E-07, 3.443E-07, 3.617E-07, 3.793E-07, | |||
| 3629 | 3.793E-07, 3.839E-07, 4.081E-07, 4.117E-07, 4.085E-07, | |||
| 3630 | 3.920E-07, 3.851E-07, 3.754E-07, 3.490E-07, 3.229E-07, | |||
| 3631 | 2.978E-07, 2.691E-07, 2.312E-07, 2.029E-07, 1.721E-07, | |||
| 3632 | 1.472E-07, 1.308E-07, 1.132E-07, 9.736E-08, 8.458E-08, | |||
| 3633 | 7.402E-08, 6.534E-08, 5.811E-08, 5.235E-08, 4.762E-08, | |||
| 3634 | 4.293E-08, 3.896E-08, 3.526E-08, 3.165E-08, 2.833E-08, | |||
| 3635 | 2.551E-08, 2.288E-08, 2.036E-08, 1.820E-08, 1.626E-08, | |||
| 3636 | 1.438E-08, 1.299E-08, 1.149E-08, 1.030E-08, 9.148E-09, | |||
| 3637 | 8.122E-09, 7.264E-09, 6.425E-09, 5.777E-09, 5.060E-09, | |||
| 3638 | 4.502E-09, 4.013E-09, 3.567E-09, 3.145E-09, 2.864E-09, | |||
| 3639 | 2.553E-09, 2.311E-09, 2.087E-09, 1.886E-09, 1.716E-09, | |||
| 3640 | 1.556E-09, 1.432E-09, 1.311E-09, 1.196E-09, 1.091E-09, | |||
| 3641 | 1.006E-09, 9.428E-10, 8.900E-10, 8.438E-10, 8.005E-10, | |||
| 3642 | 7.597E-10, 7.201E-10, 6.818E-10, 6.550E-10, 6.286E-10, | |||
| 3643 | 6.004E-10, 5.730E-10, 5.466E-10, 5.203E-10, 4.968E-10, | |||
| 3644 | 4.741E-10, 4.520E-10, 4.314E-10, 4.124E-10, 3.944E-10, | |||
| 3645 | 3.777E-10, 3.619E-10, 3.477E-10, 3.344E-10, 3.217E-10, | |||
| 3646 | 3.096E-10, 2.999E-10, 2.898E-10, 2.826E-10, 2.750E-10, | |||
| 3647 | 2.701E-10, 2.651E-10, 2.641E-10, 2.671E-10, 2.670E-10, | |||
| 3648 | 2.748E-10, 2.863E-10, 3.051E-10, 3.163E-10, 3.284E-10, | |||
| 3649 | 3.408E-10, 3.601E-10, 3.710E-10, 3.878E-10, 4.028E-10, | |||
| 3650 | 4.159E-10, 4.296E-10, 4.371E-10, 4.463E-10, 4.520E-10, | |||
| 3651 | 4.554E-10, 4.716E-10, 4.791E-10, 4.900E-10, 5.001E-10, | |||
| 3652 | 4.999E-10, 5.061E-10, 5.291E-10, 5.416E-10, 5.994E-10, | |||
| 3653 | 6.394E-10, 6.807E-10, 7.250E-10, 7.847E-10, 8.430E-10, | |||
| 3654 | 9.146E-10, 9.907E-10, 1.062E-09, 1.170E-09, 1.277E-09, | |||
| 3655 | 1.401E-09, 1.524E-09, 1.674E-09, 1.888E-09, 2.112E-09, | |||
| 3656 | 2.322E-09, 2.808E-09, 3.269E-09, 3.902E-09, 4.614E-09, | |||
| 3657 | 5.763E-09, 6.747E-09, 8.972E-09, 1.118E-08, 1.428E-08, | |||
| 3658 | 1.713E-08, 1.948E-08, 2.090E-08, 2.211E-08, 2.362E-08, | |||
| 3659 | 2.556E-08, 2.729E-08, 2.880E-08, 3.046E-08, 3.167E-08, | |||
| 3660 | 3.367E-08, 3.457E-08, 3.590E-08, 3.711E-08, 3.826E-08, | |||
| 3661 | 4.001E-08, 4.211E-08, 4.315E-08, 4.661E-08, 5.010E-08, | |||
| 3662 | 5.249E-08, 5.840E-08, 6.628E-08, 7.512E-08, 8.253E-08, | |||
| 3663 | 9.722E-08, 1.067E-07, 1.153E-07, 1.347E-07, 1.428E-07, | |||
| 3664 | 1.577E-07, 1.694E-07, 1.833E-07, 1.938E-07, 2.108E-07, | |||
| 3665 | 2.059E-07, 2.157E-07, 2.185E-07, 2.208E-07, 2.182E-07, | |||
| 3666 | 2.093E-07, 2.014E-07, 1.962E-07, 1.819E-07, 1.713E-07, | |||
| 3667 | 1.510E-07, 1.340E-07, 1.154E-07, 9.890E-08, 8.880E-08, | |||
| 3668 | 7.673E-08, 6.599E-08, 5.730E-08, 5.081E-08, 4.567E-08, | |||
| 3669 | 4.147E-08, 3.773E-08, 3.460E-08, 3.194E-08, 2.953E-08, | |||
| 3670 | 2.759E-08, 2.594E-08, 2.442E-08, 2.355E-08, 2.283E-08, | |||
| 3671 | 2.279E-08, 2.231E-08, 2.279E-08, 2.239E-08, 2.210E-08, | |||
| 3672 | 2.309E-08, 2.293E-08, 2.352E-08, 2.415E-08, 2.430E-08, | |||
| 3673 | 2.426E-08, 2.465E-08, 2.500E-08, 2.496E-08, 2.465E-08, | |||
| 3674 | 2.475E-08, 2.179E-08, 1.934E-08, 1.676E-08, 1.415E-08, | |||
| 3675 | 1.115E-08, 9.148E-09, 7.692E-09, 6.193E-09, 5.401E-09, | |||
| 3676 | 4.341E-09, 3.734E-09, 3.127E-09, 2.619E-09, 2.181E-09, | |||
| 3677 | 1.887E-09, 1.625E-09, 1.456E-09, 1.304E-09, 1.190E-09, | |||
| 3678 | 1.083E-09, 1.012E-09, 9.153E-10, 8.434E-10, 7.828E-10, | |||
| 3679 | 7.210E-10, 6.665E-10, 6.136E-10, 5.728E-10, 5.351E-10, | |||
| 3680 | 4.985E-10, 4.633E-10, 4.337E-10, 4.069E-10, 3.825E-10, | |||
| 3681 | 3.596E-10, 3.374E-10, 3.186E-10, 3.006E-10, 2.837E-10, | |||
| 3682 | 2.681E-10, 2.538E-10, 2.405E-10, 2.277E-10, 2.167E-10, | |||
| 3683 | 2.060E-10, 1.961E-10, 1.871E-10, 1.788E-10, 1.711E-10, | |||
| 3684 | 1.639E-10, 1.574E-10, 1.515E-10, 1.456E-10, 1.411E-10, | |||
| 3685 | 1.365E-10, 1.315E-10, 1.296E-10, 1.262E-10, 1.264E-10, | |||
| 3686 | 1.257E-10, 1.252E-10, 1.327E-10, 1.392E-10, 1.519E-10, | |||
| 3687 | 1.664E-10, 1.911E-10, 2.276E-10, 2.702E-10, 3.086E-10, | |||
| 3688 | 3.378E-10, 3.632E-10, 3.957E-10, 4.360E-10, 4.701E-10, | |||
| 3689 | 5.030E-10, 5.381E-10, 5.793E-10, 6.190E-10, 6.596E-10, | |||
| 3690 | 7.004E-10, 7.561E-10, 7.934E-10, 8.552E-10, 9.142E-10, | |||
| 3691 | 9.570E-10, 1.027E-09, 1.097E-09, 1.193E-09, 1.334E-09, | |||
| 3692 | 1.470E-09, 1.636E-09, 1.871E-09, 2.122E-09, 2.519E-09, | |||
| 3693 | 2.806E-09, 3.203E-09, 3.846E-09, 4.362E-09, 5.114E-09, | |||
| 3694 | 5.643E-09, 6.305E-09, 6.981E-09, 7.983E-09, 8.783E-09, | |||
| 3695 | 9.419E-09, 1.017E-08, 1.063E-08, 1.121E-08, 1.130E-08, | |||
| 3696 | 1.201E-08, 1.225E-08, 1.232E-08, 1.223E-08, 1.177E-08, | |||
| 3697 | 1.151E-08, 1.116E-08, 1.047E-08, 9.698E-09, 8.734E-09, | |||
| 3698 | 8.202E-09, 7.041E-09, 6.074E-09, 5.172E-09, 4.468E-09, | |||
| 3699 | 3.913E-09, 3.414E-09, 2.975E-09, 2.650E-09, 2.406E-09, | |||
| 3700 | 2.173E-09, 2.009E-09, 1.861E-09, 1.727E-09, 1.612E-09, | |||
| 3701 | 1.514E-09, 1.430E-09, 1.362E-09, 1.333E-09, 1.288E-09, | |||
| 3702 | 1.249E-09, 1.238E-09, 1.228E-09, 1.217E-09, 1.202E-09, | |||
| 3703 | 1.209E-09, 1.177E-09, 1.157E-09, 1.165E-09, 1.142E-09, | |||
| 3704 | 1.131E-09, 1.138E-09, 1.127E-09, 1.131E-09, 1.039E-09, | |||
| 3705 | 9.049E-10, 8.118E-10, 6.369E-10, 5.329E-10, 4.016E-10, | |||
| 3706 | 3.329E-10, 2.698E-10, 2.539E-10, 2.236E-10, 1.814E-10, | |||
| 3707 | 1.560E-10, 1.385E-10, 1.135E-10, 9.918E-11, 8.391E-11, | |||
| 3708 | 7.496E-11, 6.715E-11, 6.105E-11, 5.585E-11, 5.160E-11, | |||
| 3709 | 4.764E-11, 4.401E-11, 4.099E-11, 3.816E-11, 3.565E-11, | |||
| 3710 | 3.342E-11, 3.142E-11, 2.954E-11, 2.776E-11, 2.624E-11, | |||
| 3711 | 2.485E-11, 2.355E-11, 2.237E-11, 2.128E-11, 2.031E-11, | |||
| 3712 | 1.942E-11, 1.859E-11, 1.785E-11, 1.718E-11, 1.658E-11, | |||
| 3713 | 1.603E-11, 1.555E-11, 1.514E-11, 1.477E-11, 1.447E-11, | |||
| 3714 | 1.423E-11, 1.405E-11, 1.393E-11, 1.388E-11, 1.388E-11, | |||
| 3715 | 1.396E-11, 1.409E-11, 1.430E-11, 1.459E-11, 1.494E-11, | |||
| 3716 | 1.538E-11, 1.590E-11, 1.650E-11, 1.719E-11, 1.800E-11, | |||
| 3717 | 1.890E-11, 1.996E-11, 2.118E-11, 2.247E-11, 2.391E-11, | |||
| 3718 | 2.563E-11, 2.695E-11, 2.866E-11, 3.096E-11, 3.392E-11, | |||
| 3719 | 3.806E-11, 4.261E-11, 4.748E-11, 5.323E-11, 5.935E-11, | |||
| 3720 | 6.619E-11, 7.418E-11, 8.294E-11, 9.260E-11, 1.039E-10, | |||
| 3721 | 1.156E-10, 1.297E-10, 1.460E-10, 1.641E-10, 1.858E-10, | |||
| 3722 | 2.100E-10, 2.383E-10, 2.724E-10, 3.116E-10, 3.538E-10, | |||
| 3723 | 4.173E-10, 4.727E-10, 5.503E-10, 6.337E-10, 7.320E-10, | |||
| 3724 | 8.298E-10, 9.328E-10, 1.059E-09, 1.176E-09, 1.328E-09, | |||
| 3725 | 1.445E-09, 1.593E-09, 1.770E-09, 1.954E-09, 2.175E-09, | |||
| 3726 | 2.405E-09, 2.622E-09, 2.906E-09, 3.294E-09, 3.713E-09, | |||
| 3727 | 3.980E-09, 4.384E-09, 4.987E-09, 5.311E-09, 5.874E-09, | |||
| 3728 | 6.337E-09, 7.027E-09, 7.390E-09, 7.769E-09, 8.374E-09, | |||
| 3729 | 8.605E-09, 9.165E-09, 9.415E-09, 9.511E-09, 9.704E-09, | |||
| 3730 | 9.588E-09, 9.450E-09, 9.086E-09, 8.798E-09, 8.469E-09, | |||
| 3731 | 7.697E-09, 7.168E-09, 6.255E-09, 5.772E-09, 4.970E-09, | |||
| 3732 | 4.271E-09, 3.653E-09, 3.154E-09, 2.742E-09, 2.435E-09, | |||
| 3733 | 2.166E-09, 1.936E-09, 1.731E-09, 1.556E-09, 1.399E-09, | |||
| 3734 | 1.272E-09, 1.157E-09, 1.066E-09, 9.844E-10, 9.258E-10, | |||
| 3735 | 8.787E-10, 8.421E-10, 8.083E-10, 8.046E-10, 8.067E-10, | |||
| 3736 | 8.181E-10, 8.325E-10, 8.517E-10, 9.151E-10, 9.351E-10, | |||
| 3737 | 9.677E-10, 1.071E-09, 1.126E-09, 1.219E-09, 1.297E-09, | |||
| 3738 | 1.408E-09, 1.476E-09, 1.517E-09, 1.600E-09, 1.649E-09, | |||
| 3739 | 1.678E-09, 1.746E-09, 1.764E-09, 1.741E-09, 1.703E-09, | |||
| 3740 | 1.506E-09, 1.298E-09, 1.066E-09, 8.872E-10, 7.676E-10, | |||
| 3741 | 5.313E-10, 4.978E-10, 4.163E-10, 3.527E-10, 2.929E-10, | |||
| 3742 | 2.372E-10, 1.992E-10, 1.767E-10, 1.588E-10, 1.419E-10, | |||
| 3743 | 1.275E-10, 1.186E-10, 1.082E-10, 9.390E-11, 8.110E-11, | |||
| 3744 | 7.039E-11, 6.366E-11, 5.968E-11, 5.547E-11, 5.202E-11, | |||
| 3745 | 4.730E-11, 4.240E-11, 3.969E-11, 3.535E-11, 3.219E-11, | |||
| 3746 | 2.916E-11, 2.677E-11, 2.445E-11, 2.279E-11, 2.107E-11, | |||
| 3747 | 1.950E-11, 1.830E-11, 1.716E-11, 1.617E-11, 1.536E-11, | |||
| 3748 | 1.463E-11, 1.394E-11, 1.331E-11, 1.273E-11, 1.220E-11, | |||
| 3749 | 1.171E-11, 1.129E-11, 1.091E-11, 1.057E-11, 1.028E-11, | |||
| 3750 | 1.002E-11, 9.801E-12, 9.618E-12, 9.471E-12, 9.371E-12, | |||
| 3751 | 9.313E-12, 9.311E-12, 9.387E-12, 9.547E-12, 9.799E-12, | |||
| 3752 | 1.013E-11, 1.082E-11, 1.141E-11, 1.220E-11, 1.352E-11, | |||
| 3753 | 1.538E-11, 1.732E-11, 1.978E-11, 2.366E-11, 2.896E-11, | |||
| 3754 | 3.601E-11, 4.259E-11, 4.737E-11, 5.089E-11, 5.592E-11, | |||
| 3755 | 6.109E-11, 6.628E-11, 7.381E-11, 8.088E-11, 8.966E-11, | |||
| 3756 | 1.045E-10, 1.120E-10, 1.287E-10, 1.486E-10, 1.662E-10, | |||
| 3757 | 1.866E-10, 2.133E-10, 2.524E-10, 2.776E-10, 3.204E-10, | |||
| 3758 | 3.559E-10, 4.028E-10, 4.448E-10, 4.882E-10, 5.244E-10, | |||
| 3759 | 5.605E-10, 6.018E-10, 6.328E-10, 6.579E-10, 6.541E-10, | |||
| 3760 | 7.024E-10, 7.074E-10, 7.068E-10, 7.009E-10, 6.698E-10, | |||
| 3761 | 6.545E-10, 6.209E-10, 5.834E-10, 5.412E-10, 5.001E-10, | |||
| 3762 | 4.231E-10, 3.727E-10, 3.211E-10, 2.833E-10, 2.447E-10, | |||
| 3763 | 2.097E-10, 1.843E-10, 1.639E-10, 1.449E-10, 1.270E-10, | |||
| 3764 | 1.161E-10, 1.033E-10, 9.282E-11, 8.407E-11, 7.639E-11, | |||
| 3765 | 7.023E-11, 6.474E-11, 6.142E-11, 5.760E-11, 5.568E-11, | |||
| 3766 | 5.472E-11, 5.390E-11, 5.455E-11, 5.540E-11, 5.587E-11, | |||
| 3767 | 6.230E-11, 6.490E-11, 6.868E-11, 7.382E-11, 8.022E-11, | |||
| 3768 | 8.372E-11, 9.243E-11, 1.004E-10, 1.062E-10, 1.130E-10, | |||
| 3769 | 1.176E-10, 1.244E-10, 1.279E-10, 1.298E-10, 1.315E-10, | |||
| 3770 | 1.308E-10, 1.284E-10, 1.138E-10, 9.898E-11, 7.972E-11, | |||
| 3771 | 6.261E-11, 4.860E-11, 3.916E-11, 3.416E-11, 3.043E-11, | |||
| 3772 | 2.277E-11, 1.999E-11, 1.632E-11, 1.326E-11, 1.127E-11, | |||
| 3773 | 9.680E-12, 8.474E-12, 7.490E-12, 6.688E-12, 6.012E-12, | |||
| 3774 | 5.468E-12, 5.010E-12, 4.623E-12, 4.285E-12, 3.994E-12, | |||
| 3775 | 3.741E-12, 3.519E-12, 3.326E-12, 3.157E-12, 3.011E-12, | |||
| 3776 | 2.885E-12, 2.773E-12, 2.683E-12, 2.604E-12, 2.542E-12, | |||
| 3777 | 2.493E-12, 2.458E-12, 2.434E-12, 2.423E-12, 2.424E-12, | |||
| 3778 | 2.440E-12, 2.465E-12, 2.506E-12, 2.560E-12, 2.626E-12, | |||
| 3779 | 2.707E-12, 2.803E-12, 2.914E-12, 3.039E-12, 3.184E-12, | |||
| 3780 | 3.345E-12, 3.501E-12, 3.670E-12, 3.910E-12, 4.273E-12, | |||
| 3781 | 4.770E-12, 5.347E-12, 5.978E-12, 6.682E-12, 7.467E-12, //end diff section | |||
| 3782 | 8.340E-12, 9.293E-12, 1.035E-11, 1.152E-11, 1.285E-11, | |||
| 3783 | 1.428e-11, 1.586e-11, 1.764e-11, 1.972e-11, 2.214e-11, | |||
| 3784 | 2.478e-11, 2.776e-11, 3.151e-11, 3.591e-11, 4.103e-11, | |||
| 3785 | 4.660e-11, 5.395e-11, 6.306e-11, 7.172e-11, 8.358e-11, | |||
| 3786 | 9.670e-11, 1.110e-10, 1.325e-10, 1.494e-10, 1.736e-10, | |||
| 3787 | 2.007e-10, 2.296e-10, 2.608e-10, 3.004e-10, 3.361e-10, | |||
| 3788 | 3.727e-10, 4.373e-10, 4.838e-10, 5.483e-10, 6.006e-10, | |||
| 3789 | 6.535e-10, 6.899e-10, 7.687e-10, 8.444e-10, 8.798e-10, | |||
| 3790 | 9.135e-10, 9.532e-10, 9.757e-10, 9.968e-10, 1.006e-09, | |||
| 3791 | 9.949e-10, 9.789e-10, 9.564e-10, 9.215e-10, 8.510e-10, | |||
| 3792 | 8.394e-10, 7.707e-10, 7.152e-10, 6.274e-10, 5.598e-10, | |||
| 3793 | 5.028e-10, 4.300e-10, 3.710e-10, 3.245e-10, 2.809e-10, | |||
| 3794 | 2.461e-10, 2.154e-10, 1.910e-10, 1.685e-10, 1.487e-10, | |||
| 3795 | 1.313e-10, 1.163e-10, 1.031e-10, 9.172e-11, 8.221e-11, | |||
| 3796 | 7.382e-11, 6.693e-11, 6.079e-11, 5.581e-11, 5.167e-11, | |||
| 3797 | 4.811e-11, 4.506e-11, 4.255e-11, 4.083e-11, 3.949e-11, | |||
| 3798 | 3.881e-11, 3.861e-11, 3.858e-11, 3.951e-11, 4.045e-11, | |||
| 3799 | 4.240e-11, 4.487e-11, 4.806e-11, 5.133e-11, 5.518e-11, | |||
| 3800 | 5.919e-11, 6.533e-11, 7.031e-11, 7.762e-11, 8.305e-11, | |||
| 3801 | 9.252e-11, 9.727e-11, 1.045e-10, 1.117e-10, 1.200e-10, | |||
| 3802 | 1.275e-10, 1.341e-10, 1.362e-10, 1.438e-10, 1.450e-10, | |||
| 3803 | 1.455e-10, 1.455e-10, 1.434e-10, 1.381e-10, 1.301e-10, | |||
| 3804 | 1.276e-10, 1.163e-10, 1.089e-10, 9.911e-11, 8.943e-11, | |||
| 3805 | 7.618e-11, 6.424e-11, 5.717e-11, 4.866e-11, 4.257e-11, | |||
| 3806 | 3.773e-11, 3.331e-11, 2.958e-11, 2.629e-11, 2.316e-11, | |||
| 3807 | 2.073e-11, 1.841e-11, 1.635e-11, 1.464e-11, 1.310e-11, | |||
| 3808 | 1.160e-11, 1.047e-11, 9.408e-12, 8.414e-12, 7.521e-12, | |||
| 3809 | 6.705e-12, 5.993e-12, 5.371e-12, 4.815e-12, 4.338e-12, | |||
| 3810 | 3.921e-12, 3.567e-12, 3.265e-12, 3.010e-12, 2.795e-12, | |||
| 3811 | 2.613e-12, 2.464e-12, 2.346e-12, 2.256e-12, 2.195e-12, | |||
| 3812 | 2.165e-12, 2.166e-12, 2.198e-12, 2.262e-12, 2.364e-12, | |||
| 3813 | 2.502e-12, 2.682e-12, 2.908e-12, 3.187e-12, 3.533e-12, | |||
| 3814 | 3.946e-12, 4.418e-12, 5.013e-12, 5.708e-12, 6.379e-12, | |||
| 3815 | 7.430e-12, 8.390e-12, 9.510e-12, 1.078e-11, 1.259e-11, | |||
| 3816 | 1.438e-11, 1.630e-11, 1.814e-11, 2.055e-11, 2.348e-11, | |||
| 3817 | 2.664e-11, 2.956e-11, 3.300e-11, 3.677e-11, 4.032e-11, | |||
| 3818 | 4.494e-11, 4.951e-11, 5.452e-11, 6.014e-11, 6.500e-11, | |||
| 3819 | 6.915e-11, 7.450e-11, 7.971e-11, 8.468e-11, 8.726e-11, | |||
| 3820 | 8.995e-11, 9.182e-11, 9.509e-11, 9.333e-11, 9.386e-11, | |||
| 3821 | 9.457e-11, 9.210e-11, 9.019e-11, 8.680e-11, 8.298e-11, | |||
| 3822 | 7.947e-11, 7.460e-11, 7.082e-11, 6.132e-11, 5.855e-11, | |||
| 3823 | 5.073e-11, 4.464e-11, 3.825e-11, 3.375e-11, 2.911e-11, | |||
| 3824 | 2.535e-11, 2.160e-11, 1.907e-11, 1.665e-11, 1.463e-11, | |||
| 3825 | 1.291e-11, 1.133e-11, 9.997e-12, 8.836e-12, 7.839e-12, | |||
| 3826 | 6.943e-12, 6.254e-12, 5.600e-12, 5.029e-12, 4.529e-12, | |||
| 3827 | 4.102e-12, 3.737e-12, 3.428e-12, 3.169e-12, 2.959e-12, | |||
| 3828 | 2.798e-12, 2.675e-12, 2.582e-12, 2.644e-12, 2.557e-12, | |||
| 3829 | 2.614e-12, 2.717e-12, 2.874e-12, 3.056e-12, 3.187e-12, | |||
| 3830 | 3.631e-12, 3.979e-12, 4.248e-12, 4.817e-12, 5.266e-12, | |||
| 3831 | 5.836e-12, 6.365e-12, 6.807e-12, 7.470e-12, 7.951e-12, | |||
| 3832 | 8.636e-12, 8.972e-12, 9.314e-12, 9.445e-12, 1.003e-11, | |||
| 3833 | 1.013e-11, 9.937e-12, 9.729e-12, 9.064e-12, 9.119e-12, | |||
| 3834 | 9.124e-12, 8.704e-12, 8.078e-12, 7.470e-12, 6.329e-12, | |||
| 3835 | 5.674e-12, 4.808e-12, 4.119e-12, 3.554e-12, 3.103e-12, | |||
| 3836 | 2.731e-12, 2.415e-12, 2.150e-12, 1.926e-12, 1.737e-12, | |||
| 3837 | 1.578e-12, 1.447e-12, 1.340e-12, 1.255e-12, 1.191e-12, | |||
| 3838 | 1.146e-12, 1.121e-12, 1.114e-12, 1.126e-12, 1.156e-12, | |||
| 3839 | 1.207e-12, 1.278e-12, 1.372e-12, 1.490e-12, 1.633e-12, | |||
| 3840 | 1.805e-12, 2.010e-12, 2.249e-12, 2.528e-12, 2.852e-12, | |||
| 3841 | 3.228e-12, 3.658e-12, 4.153e-12, 4.728e-12, 5.394e-12, | |||
| 3842 | 6.176e-12, 7.126e-12, 8.188e-12, 9.328e-12, 1.103e-11, | |||
| 3843 | 1.276e-11, 1.417e-11, 1.615e-11, 1.840e-11, 2.155e-11, | |||
| 3844 | 2.429e-11, 2.826e-11, 3.222e-11, 3.664e-11, 4.140e-11, | |||
| 3845 | 4.906e-11, 5.536e-11, 6.327e-11, 7.088e-11, 8.316e-11, | |||
| 3846 | 9.242e-11, 1.070e-10, 1.223e-10, 1.341e-10, 1.553e-10, | |||
| 3847 | 1.703e-10, 1.900e-10, 2.022e-10, 2.233e-10, 2.345e-10, | |||
| 3848 | 2.438e-10, 2.546e-10, 2.599e-10, 2.661e-10, 2.703e-10, | |||
| 3849 | 2.686e-10, 2.662e-10, 2.560e-10, 2.552e-10, 2.378e-10, | |||
| 3850 | 2.252e-10, 2.146e-10, 1.885e-10, 1.668e-10, 1.441e-10, | |||
| 3851 | 1.295e-10, 1.119e-10, 9.893e-11, 8.687e-11, 7.678e-11, | |||
| 3852 | 6.685e-11, 5.879e-11, 5.127e-11, 4.505e-11, 3.997e-11, | |||
| 3853 | 3.511e-11}; | |||
| 3854 | ||||
| 3855 | ||||
| 3856 | // H2O foreign continuum parameters at all temperatures | |||
| 3857 | // date of last update: 10/29/18 | |||
| 3858 | // units of (CM**3/MOL)*1.E-20 | |||
| 3859 | const Numeric FH2O_ckd_mt_320_v1 = -20.0; | |||
| 3860 | const Numeric FH2O_ckd_mt_320_v2 = 20000.0; | |||
| 3861 | const Numeric FH2O_ckd_mt_320_dv = 10.0; | |||
| 3862 | const int FH2O_ckd_mt_320_npt = 2003; | |||
| 3863 | const double FH2O_ckd_mt_320[FH2O_ckd_mt_320_npt+addF77fields] = { | |||
| 3864 | 0.000e0, 1.205e-02, 1.126e-02, | |||
| 3865 | 1.095e-02, 1.126e-02, 1.205e-02, 1.322e-02, 1.430e-02, | |||
| 3866 | 1.506e-02, 1.548e-02, 1.534e-02, 1.486e-02, 1.373e-02, | |||
| 3867 | 1.262e-02, 1.134e-02, 1.001e-02, 8.702e-03, 7.475e-03, | |||
| 3868 | 6.481e-03, 5.480e-03, 4.600e-03, 3.833e-03, 3.110e-03, | |||
| 3869 | 2.543e-03, 2.049e-03, 1.680e-03, 1.374e-03, 1.046e-03, | |||
| 3870 | 8.193e-04, 6.267e-04, 4.968e-04, 3.924e-04, 2.983e-04, | |||
| 3871 | 2.477e-04, 1.997e-04, 1.596e-04, 1.331e-04, 1.061e-04, | |||
| 3872 | 8.942e-05, 7.168e-05, 5.887e-05, 4.848e-05, 3.817e-05, | |||
| 3873 | 3.170e-05, 2.579e-05, 2.162e-05, 1.768e-05, 1.490e-05, | |||
| 3874 | 1.231e-05, 1.013e-05, 8.555e-06, 7.328e-06, 6.148e-06, | |||
| 3875 | 5.207e-06, 4.387e-06, 3.741e-06, 3.220e-06, 2.753e-06, | |||
| 3876 | 2.346e-06, 1.985e-06, 1.716e-06, 1.475e-06, 1.286e-06, | |||
| 3877 | 1.122e-06, 9.661e-07, 8.284e-07, 7.057e-07, 6.119e-07, | |||
| 3878 | 5.290e-07, 4.571e-07, 3.948e-07, 3.432e-07, 2.983e-07, | |||
| 3879 | 2.589e-07, 2.265e-07, 1.976e-07, 1.704e-07, 1.456e-07, | |||
| 3880 | 1.260e-07, 1.101e-07, 9.648e-08, 8.415e-08, 7.340e-08, | |||
| 3881 | 6.441e-08, 5.643e-08, 4.940e-08, 4.276e-08, 3.703e-08, | |||
| 3882 | 3.227e-08, 2.825e-08, 2.478e-08, 2.174e-08, 1.898e-08, | |||
| 3883 | 1.664e-08, 1.458e-08, 1.278e-08, 1.126e-08, 9.891e-09, | |||
| 3884 | 8.709e-09, 7.652e-09, 6.759e-09, 5.975e-09, 5.310e-09, | |||
| 3885 | 4.728e-09, 4.214e-09, 3.792e-09, 3.463e-09, 3.226e-09, | |||
| 3886 | 2.992e-09, 2.813e-09, 2.749e-09, 2.809e-09, 2.913e-09, | |||
| 3887 | 3.037e-09, 3.413e-09, 3.738e-09, 4.189e-09, 4.808e-09, | |||
| 3888 | 5.978e-09, 7.088e-09, 8.071e-09, 9.610e-09, 1.210e-08, | |||
| 3889 | 1.500e-08, 1.764e-08, 2.221e-08, 2.898e-08, 3.948e-08, | |||
| 3890 | 5.068e-08, 6.227e-08, 7.898e-08, 1.033e-07, 1.437e-07, | |||
| 3891 | 1.889e-07, 2.589e-07, 3.590e-07, 4.971e-07, 7.156e-07, | |||
| 3892 | 9.983e-07, 1.381e-06, 1.929e-06, 2.591e-06, 3.453e-06, | |||
| 3893 | 4.570e-06, 5.930e-06, 7.552e-06, 9.556e-06, 1.183e-05, | |||
| 3894 | 1.425e-05, 1.681e-05, 1.978e-05, 2.335e-05, 2.668e-05, | |||
| 3895 | 3.022e-05, 3.371e-05, 3.715e-05, 3.967e-05, 4.060e-05, | |||
| 3896 | 4.010e-05, 3.809e-05, 3.491e-05, 3.155e-05, 2.848e-05, | |||
| 3897 | 2.678e-05, 2.660e-05, 2.811e-05, 3.071e-05, 3.294e-05, | |||
| 3898 | 3.459e-05, 3.569e-05, 3.560e-05, 3.434e-05, 3.186e-05, | |||
| 3899 | 2.916e-05, 2.622e-05, 2.275e-05, 1.918e-05, 1.620e-05, | |||
| 3900 | 1.373e-05, 1.182e-05, 1.006e-05, 8.556e-06, 7.260e-06, | |||
| 3901 | 6.110E-06, 5.040E-06, 4.230E-06, 3.456E-06, 2.903E-06, | |||
| 3902 | 2.486E-06, 2.039E-06, 1.672E-06, 1.285E-06, 1.054E-06, // begin section diff to MT 1.00 | |||
| 3903 | 8.302E-07, 6.667E-07, 5.503E-07, 4.562E-07, 3.948E-07, | |||
| 3904 | 3.198E-07, 2.586E-07, 2.225E-07, 1.807E-07, 1.530E-07, | |||
| 3905 | 1.294E-07, 1.126E-07, 9.604E-08, 7.850E-08, 6.813E-08, | |||
| 3906 | 5.583E-08, 4.690E-08, 3.996E-08, 3.373E-08, 2.930E-08, | |||
| 3907 | 2.417E-08, 2.061E-08, 1.743E-08, 1.475E-08, 1.273E-08, | |||
| 3908 | 1.084E-08, 9.368E-09, 7.985E-09, 6.785E-09, 5.804E-09, | |||
| 3909 | 4.975E-09, 4.311E-09, 3.738E-09, 3.275E-09, 2.847E-09, | |||
| 3910 | 2.469E-09, 2.149E-09, 1.884E-09, 1.631E-09, 1.393E-09, | |||
| 3911 | 1.201E-09, 1.027E-09, 8.807E-10, 7.521E-10, 6.436E-10, | |||
| 3912 | 5.509E-10, 4.729E-10, 4.055E-10, 3.490E-10, 3.006E-10, | |||
| 3913 | 2.599E-10, 2.246E-10, 1.942E-10, 1.685E-10, 1.464E-10, | |||
| 3914 | 1.273E-10, 1.115E-10, 9.794E-11, 8.729E-11, 7.893E-11, | |||
| 3915 | 7.313E-11, 7.069E-11, 7.190E-11, 7.828E-11, 9.295E-11, | |||
| 3916 | 1.174E-10, 1.578E-10, 2.184E-10, 3.053E-10, 4.212E-10, | |||
| 3917 | 5.733E-10, 7.497E-10, 9.487E-10, 1.153E-09, 1.343E-09, | |||
| 3918 | 1.503E-09, 1.623E-09, 1.696E-09, 1.746E-09, 1.789E-09, | |||
| 3919 | 1.852E-09, 1.862E-09, 1.886E-09, 1.912E-09, 1.942E-09, | |||
| 3920 | 1.938E-09, 1.914E-09, 1.898E-09, 1.864E-09, 1.770E-09, | |||
| 3921 | 1.635E-09, 1.464E-09, 1.279E-09, 1.099E-09, 9.528E-10, | |||
| 3922 | 8.433E-10, 7.794E-10, 7.793E-10, 8.241E-10, 9.417E-10, | |||
| 3923 | 1.179E-09, 1.616E-09, 2.144E-09, 2.992E-09, 4.344E-09, | |||
| 3924 | 6.415E-09, 9.242E-09, 1.310E-08, 1.847E-08, 2.567E-08, | |||
| 3925 | 3.390E-08, 4.357E-08, 5.301E-08, 6.364E-08, 7.438E-08, | |||
| 3926 | 8.381E-08, 9.294E-08, 1.013E-07, 1.103E-07, 1.170E-07, | |||
| 3927 | 1.200E-07, 1.190E-07, 1.133E-07, 1.040E-07, 9.475E-08, | |||
| 3928 | 8.601E-08, 8.074E-08, 8.023E-08, 8.473E-08, 9.256E-08, | |||
| 3929 | 9.989E-08, 1.056E-07, 1.079E-07, 1.079E-07, 1.049E-07, | |||
| 3930 | 1.000E-07, 9.350E-08, 8.662E-08, 7.880E-08, 7.137E-08, | |||
| 3931 | 6.438E-08, 5.706E-08, 5.132E-08, 4.815E-08, 4.736E-08, | |||
| 3932 | 4.709E-08, 4.918E-08, 5.227E-08, 5.603E-08, 6.023E-08, | |||
| 3933 | 6.567E-08, 7.403E-08, 8.695E-08, 9.929E-08, 1.163E-07, | |||
| 3934 | 1.379E-07, 1.658E-07, 2.010E-07, 2.425E-07, 2.920E-07, | |||
| 3935 | 3.562E-07, 4.274E-07, 5.173E-07, 6.285E-07, 7.787E-07, | |||
| 3936 | 9.563E-07, 1.194E-06, 1.517E-06, 1.934E-06, 2.511E-06, | |||
| 3937 | 3.197E-06, 4.024E-06, 4.981E-06, 6.090E-06, 7.229E-06, | |||
| 3938 | 8.439E-06, 9.367E-06, 1.016E-05, 1.057E-05, 1.088E-05, | |||
| 3939 | 1.108E-05, 1.129E-05, 1.159E-05, 1.190E-05, 1.210E-05, | |||
| 3940 | 1.210E-05, 1.200E-05, 1.190E-05, 1.180E-05, 1.190E-05, | |||
| 3941 | 1.230E-05, 1.280E-05, 1.300E-05, 1.290E-05, 1.210E-05, | |||
| 3942 | 1.090E-05, 9.440E-06, 7.790E-06, 6.220E-06, 4.640E-06, | |||
| 3943 | 3.400E-06, 2.470E-06, 1.780E-06, 1.290E-06, 9.260E-07, | |||
| 3944 | 7.000E-07, 5.360E-07, 4.260E-07, 3.410E-07, 2.790E-07, | |||
| 3945 | 2.360E-07, 2.010E-07, 1.750E-07, 1.520E-07, 1.330E-07, | |||
| 3946 | 1.160E-07, 1.010E-07, 8.830E-08, 7.710E-08, 6.770E-08, | |||
| 3947 | 6.010E-08, 5.340E-08, 4.720E-08, 4.200E-08, 3.690E-08, | |||
| 3948 | 3.270E-08, 2.920E-08, 2.570E-08, 2.270E-08, 2.000E-08, | |||
| 3949 | 1.770E-08, 1.560E-08, 1.370E-08, 1.200E-08, 1.050E-08, | |||
| 3950 | 9.180E-09, 8.000E-09, 6.980E-09, 6.080E-09, 5.270E-09, | |||
| 3951 | 4.560E-09, 3.940E-09, 3.400E-09, 2.930E-09, 2.510E-09, | |||
| 3952 | 2.150E-09, 1.840E-09, 1.570E-09, 1.340E-09, 1.140E-09, | |||
| 3953 | 9.660E-10, 8.190E-10, 6.930E-10, 5.860E-10, 4.950E-10, | |||
| 3954 | 4.190E-10, 3.560E-10, 3.060E-10, 2.670E-10, 2.410E-10, | |||
| 3955 | 2.260E-10, 2.250E-10, 2.360E-10, 2.570E-10, 2.840E-10, | |||
| 3956 | 3.180E-10, 3.490E-10, 3.710E-10, 3.810E-10, 3.840E-10, | |||
| 3957 | 3.800E-10, 3.590E-10, 3.370E-10, 3.080E-10, 2.770E-10, | |||
| 3958 | 2.470E-10, 2.200E-10, 2.050E-10, 1.990E-10, 2.030E-10, | |||
| 3959 | 2.130E-10, 2.250E-10, 2.340E-10, 2.410E-10, 2.470E-10, | |||
| 3960 | 2.480E-10, 2.500E-10, 2.520E-10, 2.580E-10, 2.640E-10, | |||
| 3961 | 2.690E-10, 2.790E-10, 2.950E-10, 3.130E-10, 3.340E-10, | |||
| 3962 | 3.570E-10, 3.840E-10, 4.200E-10, 4.660E-10, 5.210E-10, | |||
| 3963 | 5.960E-10, 6.890E-10, 8.010E-10, 9.320E-10, 1.080E-09, | |||
| 3964 | 1.240E-09, 1.450E-09, 1.710E-09, 2.010E-09, 2.360E-09, | |||
| 3965 | 2.820E-09, 3.380E-09, 4.010E-09, 4.790E-09, 5.740E-09, | |||
| 3966 | 6.920E-09, 8.338E-09, 1.015E-08, 1.246E-08, 1.512E-08, | |||
| 3967 | 1.851E-08, 2.320E-08, 2.988E-08, 3.989E-08, 5.351E-08, | |||
| 3968 | 7.256E-08, 1.011E-07, 1.388E-07, 1.914E-07, 2.512E-07, | |||
| 3969 | 3.257E-07, 4.075E-07, 4.991E-07, 5.914E-07, 6.638E-07, | |||
| 3970 | 7.160E-07, 7.450E-07, 7.590E-07, 7.540E-07, 7.470E-07, | |||
| 3971 | 7.530E-07, 7.940E-07, 8.460E-07, 8.950E-07, 9.360E-07, | |||
| 3972 | 9.840E-07, 1.020E-06, 1.050E-06, 1.060E-06, 1.070E-06, | |||
| 3973 | 1.070E-06, 1.040E-06, 9.790E-07, 8.800E-07, 7.660E-07, | |||
| 3974 | 6.380E-07, 5.142E-07, 3.982E-07, 2.940E-07, 2.177E-07, | |||
| 3975 | 1.612E-07, 1.185E-07, 8.966E-08, 6.735E-08, 5.219E-08, | |||
| 3976 | 4.140E-08, 3.403E-08, 2.811E-08, 2.358E-08, 1.969E-08, | |||
| 3977 | 1.684E-08, 1.462E-08, 1.285E-08, 1.134E-08, 9.916E-09, | |||
| 3978 | 8.650E-09, 7.550E-09, 6.620E-09, 5.830E-09, 5.140E-09, | |||
| 3979 | 4.510E-09, 3.980E-09, 3.530E-09, 3.120E-09, 2.780E-09, | |||
| 3980 | 2.480E-09, 2.180E-09, 1.930E-09, 1.700E-09, 1.500E-09, | |||
| 3981 | 1.330E-09, 1.160E-09, 1.030E-09, 9.010E-10, 7.860E-10, | |||
| 3982 | 6.880E-10, 6.020E-10, 5.250E-10, 4.570E-10, 3.960E-10, | |||
| 3983 | 3.440E-10, 2.980E-10, 2.570E-10, 2.210E-10, 1.900E-10, | |||
| 3984 | 1.630E-10, 1.400E-10, 1.210E-10, 1.040E-10, 9.090E-11, | |||
| 3985 | 7.960E-11, 7.050E-11, 6.300E-11, 5.670E-11, 5.090E-11, | |||
| 3986 | 4.550E-11, 4.040E-11, 3.550E-11, 3.090E-11, 2.640E-11, | |||
| 3987 | 2.260E-11, 1.900E-11, 1.600E-11, 1.340E-11, 1.140E-11, | |||
| 3988 | 1.010E-11, 9.170E-12, 8.690E-12, 8.470E-12, 8.330E-12, | |||
| 3989 | 8.200E-12, 8.040E-12, 7.950E-12, 7.980E-12, 8.250E-12, | |||
| 3990 | 8.470E-12, 8.740E-12, 8.870E-12, 8.920E-12, 8.710E-12, | |||
| 3991 | 8.300E-12, 7.890E-12, 7.590E-12, 7.500E-12, 7.630E-12, | |||
| 3992 | 8.060E-12, 8.890E-12, 1.000E-11, 1.140E-11, 1.280E-11, | |||
| 3993 | 1.450E-11, 1.640E-11, 1.870E-11, 2.120E-11, 2.440E-11, | |||
| 3994 | 2.850E-11, 3.310E-11, 3.830E-11, 4.460E-11, 5.230E-11, | |||
| 3995 | 6.150E-11, 7.350E-11, 8.840E-11, 1.070E-10, 1.290E-10, | |||
| 3996 | 1.590E-10, 1.990E-10, 2.490E-10, 3.120E-10, 3.910E-10, | |||
| 3997 | 4.980E-10, 6.280E-10, 7.860E-10, 9.660E-10, 1.160E-09, | |||
| 3998 | 1.410E-09, 1.700E-09, 2.060E-09, 2.540E-09, 3.170E-09, | |||
| 3999 | 4.080E-09, 5.240E-09, 6.800E-09, 8.920E-09, 1.130E-08, | |||
| 4000 | 1.400E-08, 1.700E-08, 2.050E-08, 2.370E-08, 2.610E-08, | |||
| 4001 | 2.770E-08, 2.850E-08, 2.860E-08, 2.780E-08, 2.720E-08, | |||
| 4002 | 2.740E-08, 2.830E-08, 3.010E-08, 3.220E-08, 3.520E-08, | |||
| 4003 | 3.780E-08, 4.030E-08, 4.210E-08, 4.330E-08, 4.390E-08, | |||
| 4004 | 4.340E-08, 4.250E-08, 4.070E-08, 3.880E-08, 3.670E-08, | |||
| 4005 | 3.560E-08, 3.520E-08, 3.670E-08, 4.020E-08, 4.640E-08, | |||
| 4006 | 5.630E-08, 6.890E-08, 8.820E-08, 1.110E-07, 1.410E-07, | |||
| 4007 | 1.730E-07, 2.120E-07, 2.570E-07, 2.990E-07, 3.450E-07, | |||
| 4008 | 3.790E-07, 4.090E-07, 4.230E-07, 4.300E-07, 4.330E-07, | |||
| 4009 | 4.350E-07, 4.440E-07, 4.540E-07, 4.620E-07, 4.670E-07, | |||
| 4010 | 4.710E-07, 4.770E-07, 4.930E-07, 5.190E-07, 5.540E-07, | |||
| 4011 | 5.900E-07, 6.120E-07, 6.150E-07, 5.810E-07, 5.210E-07, | |||
| 4012 | 4.510E-07, 3.690E-07, 2.890E-07, 2.140E-07, 1.550E-07, | |||
| 4013 | 1.110E-07, 7.780E-08, 5.460E-08, 3.930E-08, 2.930E-08, | |||
| 4014 | 2.260E-08, 1.820E-08, 1.520E-08, 1.310E-08, 1.150E-08, | |||
| 4015 | 1.020E-08, 9.010E-09, 7.950E-09, 7.040E-09, 6.200E-09, | |||
| 4016 | 5.490E-09, 4.860E-09, 4.340E-09, 3.880E-09, 3.460E-09, | |||
| 4017 | 3.070E-09, 2.710E-09, 2.380E-09, 2.090E-09, 1.820E-09, | |||
| 4018 | 1.590E-09, 1.380E-09, 1.200E-09, 1.040E-09, 9.080E-10, | |||
| 4019 | 7.880E-10, 6.850E-10, 5.960E-10, 5.200E-10, 4.530E-10, | |||
| 4020 | 3.940E-10, 3.430E-10, 2.970E-10, 2.580E-10, 2.230E-10, | |||
| 4021 | 1.920E-10, 1.660E-10, 1.430E-10, 1.240E-10, 1.060E-10, | |||
| 4022 | 9.100E-11, 7.790E-11, 6.650E-11, 5.680E-11, 4.840E-11, | |||
| 4023 | 4.110E-11, 3.510E-11, 2.990E-11, 2.540E-11, 2.170E-11, | |||
| 4024 | 1.860E-11, 1.590E-11, 1.370E-11, 1.180E-11, 1.040E-11, | |||
| 4025 | 9.240E-12, 8.390E-12, 7.860E-12, 7.700E-12, 7.850E-12, | |||
| 4026 | 8.410E-12, 9.620E-12, 1.160E-11, 1.470E-11, 1.940E-11, | |||
| 4027 | 2.580E-11, 3.510E-11, 4.730E-11, 6.260E-11, 7.980E-11, | |||
| 4028 | 9.950E-11, 1.210E-10, 1.400E-10, 1.580E-10, 1.770E-10, | |||
| 4029 | 1.980E-10, 2.220E-10, 2.470E-10, 2.790E-10, 3.140E-10, | |||
| 4030 | 3.550E-10, 4.000E-10, 4.510E-10, 5.150E-10, 5.730E-10, | |||
| 4031 | 6.250E-10, 6.650E-10, 6.910E-10, 6.980E-10, 6.830E-10, | |||
| 4032 | 6.670E-10, 6.570E-10, 6.600E-10, 6.840E-10, 7.390E-10, | |||
| 4033 | 8.040E-10, 8.730E-10, 9.440E-10, 9.950E-10, 1.030E-09, | |||
| 4034 | 1.010E-09, 9.800E-10, 9.320E-10, 8.670E-10, 7.990E-10, | |||
| 4035 | 7.290E-10, 6.670E-10, 6.140E-10, 5.780E-10, 5.650E-10, | |||
| 4036 | 5.650E-10, 5.880E-10, 6.430E-10, 7.500E-10, 9.160E-10, | |||
| 4037 | 1.160E-09, 1.510E-09, 1.990E-09, 2.700E-09, 3.660E-09, | |||
| 4038 | 4.950E-09, 6.410E-09, 8.160E-09, 1.020E-08, 1.240E-08, | |||
| 4039 | 1.460E-08, 1.640E-08, 1.790E-08, 1.870E-08, 1.930E-08, | |||
| 4040 | 1.930E-08, 1.930E-08, 1.950E-08, 2.070E-08, 2.230E-08, | |||
| 4041 | 2.340E-08, 2.440E-08, 2.550E-08, 2.670E-08, 2.760E-08, | |||
| 4042 | 2.810E-08, 2.900E-08, 2.940E-08, 2.910E-08, 2.770E-08, | |||
| 4043 | 2.520E-08, 2.210E-08, 1.840E-08, 1.490E-08, 1.150E-08, | |||
| 4044 | 8.640E-09, 6.440E-09, 4.790E-09, 3.640E-09, 2.750E-09, | |||
| 4045 | 2.140E-09, 1.750E-09, 1.480E-09, 1.300E-09, 1.160E-09, | |||
| 4046 | 1.050E-09, 9.460E-10, 8.550E-10, 7.660E-10, 6.790E-10, | |||
| 4047 | 6.010E-10, 5.300E-10, 4.670E-10, 4.130E-10, 3.670E-10, | |||
| 4048 | 3.290E-10, 2.920E-10, 2.570E-10, 2.270E-10, 1.960E-10, | |||
| 4049 | 1.700E-10, 1.470E-10, 1.270E-10, 1.100E-10, 9.190E-11, | |||
| 4050 | 7.790E-11, 6.590E-11, 5.610E-11, 4.810E-11, 4.070E-11, | |||
| 4051 | 3.540E-11, 3.040E-11, 2.620E-11, 2.300E-11, 1.970E-11, | |||
| 4052 | 1.710E-11, 1.480E-11, 1.280E-11, 1.100E-11, 9.440E-12, | |||
| 4053 | 8.080E-12, 6.940E-12, 5.930E-12, 5.060E-12, 4.310E-12, | |||
| 4054 | 3.660E-12, 3.120E-12, 2.670E-12, 2.280E-12, 1.950E-12, | |||
| 4055 | 1.670E-12, 1.430E-12, 1.220E-12, 1.050E-12, 9.060E-13, | |||
| 4056 | 7.860E-13, 6.870E-13, 6.090E-13, 5.500E-13, 5.070E-13, | |||
| 4057 | 4.780E-13, 4.660E-13, 4.770E-13, 5.210E-13, 5.940E-13, | |||
| 4058 | 7.440E-13, 9.710E-13, 1.350E-12, 1.870E-12, 2.630E-12, | |||
| 4059 | 3.670E-12, 4.950E-12, 6.390E-12, 8.000E-12, 9.880E-12, | |||
| 4060 | 1.150E-11, 1.280E-11, 1.370E-11, 1.430E-11, 1.470E-11, | |||
| 4061 | 1.450E-11, 1.420E-11, 1.400E-11, 1.410E-11, 1.430E-11, | |||
| 4062 | 1.510E-11, 1.650E-11, 1.830E-11, 2.070E-11, 2.250E-11, | |||
| 4063 | 2.380E-11, 2.420E-11, 2.380E-11, 2.270E-11, 2.100E-11, | |||
| 4064 | 1.980E-11, 1.890E-11, 1.790E-11, 1.720E-11, 1.620E-11, | |||
| 4065 | 1.540E-11, 1.430E-11, 1.350E-11, 1.350E-11, 1.420E-11, | |||
| 4066 | 1.570E-11, 1.770E-11, 2.060E-11, 2.420E-11, 2.850E-11, | |||
| 4067 | 3.430E-11, 4.160E-11, 5.240E-11, 6.820E-11, 8.920E-11, | |||
| 4068 | 1.200E-10, 1.600E-10, 2.150E-10, 2.890E-10, 3.770E-10, | |||
| 4069 | 4.800E-10, 5.930E-10, 7.250E-10, 8.530E-10, 9.600E-10, | |||
| 4070 | 1.040E-09, 1.080E-09, 1.100E-09, 1.090E-09, 1.070E-09, | |||
| 4071 | 1.070E-09, 1.120E-09, 1.210E-09, 1.330E-09, 1.480E-09, | |||
| 4072 | 1.640E-09, 1.790E-09, 1.940E-09, 2.050E-09, 2.170E-09, | |||
| 4073 | 2.280E-09, 2.400E-09, 2.530E-09, 2.740E-09, 3.030E-09, | |||
| 4074 | 3.420E-09, 3.870E-09, 4.470E-09, 5.190E-09, 5.910E-09, | |||
| 4075 | 6.770E-09, 7.500E-09, 8.280E-09, 8.830E-09, 9.360E-09, | |||
| 4076 | 9.910E-09, 1.030E-08, 1.090E-08, 1.140E-08, 1.170E-08, | |||
| 4077 | 1.180E-08, 1.180E-08, 1.180E-08, 1.210E-08, 1.260E-08, | |||
| 4078 | 1.350E-08, 1.430E-08, 1.490E-08, 1.490E-08, 1.400E-08, | |||
| 4079 | 1.250E-08, 1.070E-08, 8.610E-09, 6.570E-09, 4.800E-09, | |||
| 4080 | 3.470E-09, 2.470E-09, 1.780E-09, 1.330E-09, 1.050E-09, | |||
| 4081 | 8.720E-10, 7.510E-10, 6.760E-10, 6.270E-10, 6.000E-10, | |||
| 4082 | 5.990E-10, 6.260E-10, 6.860E-10, 7.580E-10, 8.490E-10, | |||
| 4083 | 9.530E-10, 1.050E-09, 1.140E-09, 1.200E-09, 1.250E-09, | |||
| 4084 | 1.280E-09, 1.300E-09, 1.310E-09, 1.320E-09, 1.330E-09, | |||
| 4085 | 1.330E-09, 1.310E-09, 1.270E-09, 1.230E-09, 1.190E-09, | |||
| 4086 | 1.200E-09, 1.250E-09, 1.330E-09, 1.420E-09, 1.480E-09, | |||
| 4087 | 1.490E-09, 1.410E-09, 1.260E-09, 1.080E-09, 8.800E-10, | |||
| 4088 | 6.780E-10, 4.950E-10, 3.580E-10, 2.540E-10, 1.780E-10, | |||
| 4089 | 1.260E-10, 9.280E-11, 7.130E-11, 5.560E-11, 4.500E-11, | |||
| 4090 | 3.750E-11, 3.210E-11, 2.760E-11, 2.410E-11, 2.090E-11, | |||
| 4091 | 1.820E-11, 1.590E-11, 1.360E-11, 1.180E-11, 1.030E-11, | |||
| 4092 | 9.010E-12, 7.940E-12, 6.900E-12, 6.020E-12, 5.260E-12, | |||
| 4093 | 4.620E-12, 4.060E-12, 3.550E-12, 3.130E-12, 2.760E-12, | |||
| 4094 | 2.430E-12, 2.150E-12, 1.900E-12, 1.680E-12, 1.490E-12, | |||
| 4095 | 1.320E-12, 1.170E-12, 1.040E-12, 9.350E-13, 8.470E-13, | |||
| 4096 | 7.790E-13, 7.300E-13, 6.960E-13, 6.880E-13, 7.110E-13, | |||
| 4097 | 7.600E-13, 8.670E-13, 1.040E-12, 1.310E-12, 1.710E-12, | |||
| 4098 | 2.200E-12, 2.930E-12, 3.800E-12, 4.970E-12, 6.220E-12, | |||
| 4099 | 7.630E-12, 9.290E-12, 1.100E-11, 1.240E-11, 1.340E-11, | |||
| 4100 | 1.410E-11, 1.440E-11, 1.440E-11, 1.390E-11, 1.380E-11, | |||
| 4101 | 1.410E-11, 1.490E-11, 1.640E-11, 1.860E-11, 2.110E-11, | |||
| 4102 | 2.380E-11, 2.650E-11, 2.890E-11, 3.040E-11, 3.140E-11, | |||
| 4103 | 3.290E-11, 3.430E-11, 3.600E-11, 3.910E-11, 4.440E-11, | |||
| 4104 | 5.210E-11, 6.430E-11, 8.180E-11, 1.060E-10, 1.400E-10, | |||
| 4105 | 1.780E-10, 2.240E-10, 2.770E-10, 3.350E-10, 3.950E-10, | |||
| 4106 | 4.470E-10, 4.920E-10, 5.200E-10, 5.390E-10, 5.460E-10, | |||
| 4107 | 5.530E-10, 5.660E-10, 6.020E-10, 6.430E-10, 6.680E-10, | |||
| 4108 | 6.910E-10, 7.120E-10, 7.420E-10, 7.550E-10, 7.750E-10, | |||
| 4109 | 8.090E-10, 8.300E-10, 8.350E-10, 7.950E-10, 7.220E-10, | |||
| 4110 | 6.300E-10, 5.230E-10, 4.200E-10, 3.190E-10, 2.390E-10, | |||
| 4111 | 1.790E-10, 1.360E-10, 1.050E-10, 8.320E-11, 6.890E-11, | |||
| 4112 | 5.890E-11, 5.140E-11, 4.600E-11, 4.190E-11, 3.940E-11, | |||
| 4113 | 3.900E-11, 4.070E-11, 4.390E-11, 4.820E-11, 5.290E-11, | |||
| 4114 | 5.750E-11, 6.090E-11, 6.280E-11, 6.310E-11, 6.190E-11, | |||
| 4115 | 6.040E-11, 5.850E-11, 5.710E-11, 5.680E-11, 5.680E-11, | |||
| 4116 | 5.640E-11, 5.580E-11, 5.510E-11, 5.480E-11, 5.450E-11, | |||
| 4117 | 5.570E-11, 5.770E-11, 5.960E-11, 6.050E-11, 5.890E-11, | |||
| 4118 | 5.430E-11, 4.770E-11, 4.020E-11, 3.250E-11, 2.500E-11, | |||
| 4119 | 1.820E-11, 1.310E-11, 9.320E-12, 6.580E-12, 4.640E-12, | |||
| 4120 | 3.350E-12, 2.530E-12, 1.960E-12, 1.580E-12, 1.310E-12, | |||
| 4121 | 1.110E-12, 9.580E-13, 8.320E-13, 7.310E-13, 6.430E-13, | |||
| 4122 | 5.620E-13, 4.890E-13, 4.270E-13, 3.730E-13, 3.250E-13, | |||
| 4123 | 2.840E-13, 2.500E-13, 2.210E-13, 1.950E-13, 1.720E-13, | |||
| 4124 | 1.520E-13, 1.340E-13, 1.180E-13, 1.050E-13, 9.260E-14, | |||
| 4125 | 8.210E-14, 7.290E-14, 6.480E-14, 5.770E-14, 5.150E-14, | |||
| 4126 | 4.620E-14, 4.170E-14, 3.790E-14, 3.490E-14, 3.260E-14, | |||
| 4127 | 3.090E-14, 3.000E-14, 2.980E-14, 3.040E-14, 3.200E-14, | |||
| 4128 | 3.490E-14, 3.960E-14, 4.680E-14, 5.780E-14, 7.420E-14, | |||
| 4129 | 9.800E-14, 1.320E-13, 1.790E-13, 2.230E-13, 2.650E-13, | |||
| 4130 | 3.020E-13, 3.380E-13, 3.740E-13, 4.050E-13, 4.420E-13, | |||
| 4131 | 4.940E-13, 5.480E-13, 6.110E-13, 6.770E-13, 7.560E-13, | |||
| 4132 | 8.490E-13, 9.590E-13, 1.090E-12, 1.270E-12, 1.480E-12, | |||
| 4133 | 1.730E-12, 2.080E-12, 2.480E-12, 3.030E-12, 3.880E-12, | |||
| 4134 | 4.860E-12, 6.250E-12, 8.050E-12, 1.040E-11, 1.370E-11, | |||
| 4135 | 1.750E-11, 2.200E-11, 2.750E-11, 3.350E-11, 4.080E-11, | |||
| 4136 | 4.790E-11, 5.440E-11, 5.990E-11, 6.460E-11, 6.820E-11, | |||
| 4137 | 7.130E-11, 7.620E-11, 8.360E-11, 9.590E-11, 1.150E-10, | |||
| 4138 | 1.380E-10, 1.670E-10, 1.990E-10, 2.350E-10, 2.740E-10, | |||
| 4139 | 3.110E-10, 3.510E-10, 3.890E-10, 4.210E-10, 4.490E-10, | |||
| 4140 | 4.660E-10, 4.860E-10, 4.960E-10, 5.080E-10, 5.200E-10, | |||
| 4141 | 5.290E-10, 5.300E-10, 5.220E-10, 5.160E-10, 5.180E-10, | |||
| 4142 | 5.350E-10, 5.680E-10, 6.070E-10, 6.420E-10, 6.600E-10, | |||
| 4143 | 6.390E-10, 5.830E-10, 5.030E-10, 4.110E-10, 3.200E-10, | |||
| 4144 | 2.350E-10, 1.700E-10, 1.200E-10, 8.540E-11, 6.310E-11, | |||
| 4145 | 4.920E-11, 4.010E-11, 3.380E-11, 2.970E-11, 2.710E-11, | |||
| 4146 | 2.550E-11, 2.450E-11, 2.420E-11, 2.430E-11, 2.490E-11, | |||
| 4147 | 2.600E-11, 2.730E-11, 2.910E-11, 3.160E-11, 3.450E-11, | |||
| 4148 | 3.810E-11, 4.140E-11, 4.540E-11, 5.020E-11, 5.480E-11, | |||
| 4149 | 6.110E-11, 6.720E-11, 7.370E-11, 7.990E-11, 8.500E-11, | |||
| 4150 | 9.010E-11, 9.300E-11, 9.520E-11, 9.640E-11, 9.590E-11, | |||
| 4151 | 9.390E-11, 9.140E-11, 8.950E-11, 8.970E-11, 9.300E-11, | |||
| 4152 | 9.910E-11, 1.060E-10, 1.120E-10, 1.140E-10, 1.100E-10, | |||
| 4153 | 1.000E-10, 8.680E-11, 7.140E-11, 5.610E-11, 4.170E-11, | |||
| 4154 | 3.050E-11, 2.180E-11, 1.550E-11, 1.110E-11, 8.290E-12, | |||
| 4155 | 6.380E-12, 5.070E-12, 4.200E-12, 3.640E-12, 3.280E-12, | |||
| 4156 | 3.030E-12, 2.900E-12, 2.780E-12, 2.670E-12, 2.520E-12, | |||
| 4157 | 2.340E-12, 2.150E-12, 1.950E-12, 1.750E-12, 1.540E-12, | |||
| 4158 | 1.320E-12, 1.130E-12, 9.550E-13, 7.900E-13, 6.440E-13, | |||
| 4159 | 5.180E-13, 4.140E-13, 3.320E-13, 2.670E-13, 2.180E-13, | |||
| 4160 | 1.830E-13, 1.560E-13, 1.350E-13, 1.180E-13, 1.050E-13, | |||
| 4161 | 9.310E-14, 8.350E-14, 7.550E-14, 6.890E-14, 6.360E-14, | |||
| 4162 | 5.960E-14, 5.690E-14, 5.560E-14, 5.600E-14, 5.860E-14, | |||
| 4163 | 6.420E-14, 7.330E-14, 8.850E-14, 1.140E-13, 1.490E-13, | |||
| 4164 | 1.970E-13, 2.690E-13, 3.610E-13, 4.790E-13, 6.040E-13, | |||
| 4165 | 7.510E-13, 9.200E-13, 1.090E-12, 1.260E-12, 1.390E-12, | |||
| 4166 | 1.530E-12, 1.640E-12, 1.710E-12, 1.770E-12, 1.880E-12, | |||
| 4167 | 2.080E-12, 2.370E-12, 2.820E-12, 3.420E-12, 4.180E-12, | |||
| 4168 | 5.180E-12, 6.470E-12, 7.980E-12, 9.970E-12, 1.220E-11, | |||
| 4169 | 1.470E-11, 1.750E-11, 2.050E-11, 2.380E-11, 2.660E-11, | |||
| 4170 | 2.910E-11, 3.090E-11, 3.210E-11, 3.290E-11, 3.310E-11, | |||
| 4171 | 3.370E-11, 3.490E-11, 3.690E-11, 3.820E-11, 3.920E-11, | |||
| 4172 | 4.050E-11, 4.170E-11, 4.300E-11, 4.420E-11, 4.610E-11, | |||
| 4173 | 4.780E-11, 4.830E-11, 4.690E-11, 4.310E-11, 3.810E-11, | |||
| 4174 | 3.210E-11, 2.610E-11, 2.040E-11, 1.560E-11, 1.200E-11, | |||
| 4175 | 9.200E-12, 7.100E-12, 5.650E-12, 4.630E-12, 3.860E-12, | |||
| 4176 | 3.270E-12, 2.830E-12, 2.480E-12, 2.220E-12, 2.030E-12, | |||
| 4177 | 1.910E-12, 1.840E-12, 1.820E-12, 1.820E-12, 1.860E-12, | |||
| 4178 | 1.940E-12, 2.110E-12, 2.360E-12, 2.600E-12, 2.940E-12, | |||
| 4179 | 3.310E-12, 3.730E-12, 4.170E-12, 4.570E-12, 4.980E-12, | |||
| 4180 | 5.260E-12, 5.540E-12, 5.790E-12, 6.050E-12, 6.380E-12, | |||
| 4181 | 6.710E-12, 6.930E-12, 7.030E-12, 7.050E-12, 7.050E-12, | |||
| 4182 | 7.160E-12, 7.370E-12, 7.790E-12, 8.300E-12, 8.650E-12, | |||
| 4183 | 8.760E-12, 8.320E-12, 7.510E-12, 6.480E-12, 5.310E-12, | |||
| 4184 | 4.180E-12, 3.070E-12, 2.220E-12, 1.570E-12, 1.090E-12, | |||
| 4185 | 7.390E-13, 5.110E-13, 3.660E-13, 2.680E-13, 2.000E-13, | |||
| 4186 | 1.560E-13, 1.270E-13, 1.060E-13, 9.050E-14, 7.850E-14, | |||
| 4187 | 6.900E-14, 6.100E-14, 5.420E-14, 4.840E-14, 4.320E-14, | |||
| 4188 | 3.870E-14, 3.470E-14, 3.120E-14, 2.800E-14, 2.520E-14, | |||
| 4189 | 2.270E-14, 2.050E-14, 1.860E-14, 1.690E-14, 1.550E-14, | |||
| 4190 | 1.430E-14, 1.330E-14, 1.250E-14, 1.200E-14, 1.160E-14, | |||
| 4191 | 1.150E-14, 1.160E-14, 1.190E-14, 1.250E-14, 1.340E-14, | |||
| 4192 | 1.450E-14, 1.600E-14, 1.780E-14, 2.010E-14, 2.270E-14, | |||
| 4193 | 2.590E-14, 2.960E-14, 3.400E-14, 3.920E-14, 4.530E-14, | |||
| 4194 | 5.240E-14, 6.080E-14, 7.090E-14, 8.310E-14, 9.810E-14, | |||
| 4195 | 1.170E-13, 1.420E-13, 1.780E-13, 2.250E-13, 2.790E-13, | |||
| 4196 | 3.500E-13, 4.400E-13, 5.530E-13, 6.920E-13, 8.920E-13, | |||
| 4197 | 1.150E-12, 1.480E-12, 1.920E-12, 2.540E-12, 3.370E-12, | |||
| 4198 | 4.370E-12, 5.710E-12, 7.260E-12, 8.980E-12, 1.100E-11, | |||
| 4199 | 1.340E-11, 1.590E-11, 1.860E-11, 2.140E-11, 2.400E-11, | |||
| 4200 | 2.690E-11, 2.980E-11, 3.330E-11, 3.770E-11, 4.250E-11, | |||
| 4201 | 4.750E-11, 5.110E-11, 5.370E-11, 5.560E-11, 5.610E-11, | |||
| 4202 | 5.670E-11, 5.680E-11, 5.780E-11, 5.860E-11, 5.910E-11, | |||
| 4203 | 5.930E-11, 5.910E-11, 5.920E-11, 5.930E-11, 5.940E-11, | |||
| 4204 | 5.870E-11, 5.650E-11, 5.210E-11, 4.540E-11, 3.820E-11, | |||
| 4205 | 3.070E-11, 2.370E-11, 1.780E-11, 1.320E-11, 9.820E-12, | |||
| 4206 | 7.340E-12, 5.590E-12, 4.330E-12, 3.420E-12, 2.740E-12, | |||
| 4207 | 2.230E-12, 1.860E-12, 1.560E-12, 1.350E-12, 1.170E-12, | |||
| 4208 | 1.050E-12, 9.540E-13, 8.830E-13, 8.340E-13, 8.100E-13, | |||
| 4209 | 8.110E-13, 8.200E-13, 8.460E-13, 8.830E-13, 9.330E-13, | |||
| 4210 | 9.920E-13, 1.070E-12, 1.190E-12, 1.350E-12, 1.580E-12, | |||
| 4211 | 1.860E-12, 2.170E-12, 2.520E-12, 2.920E-12, 3.360E-12, | |||
| 4212 | 3.830E-12, 4.300E-12, 4.830E-12, 5.370E-12, 5.810E-12, | |||
| 4213 | 6.230E-12, 6.480E-12, 6.770E-12, 6.990E-12, 7.170E-12, | |||
| 4214 | 7.470E-12, 7.660E-12, 7.770E-12, 7.770E-12, 7.720E-12, | |||
| 4215 | 7.770E-12, 7.970E-12, 8.400E-12, 8.900E-12, 9.420E-12, | |||
| 4216 | 9.710E-12, 9.550E-12, 8.850E-12, 7.680E-12, 6.390E-12, | |||
| 4217 | 5.020E-12, 3.740E-12, 2.680E-12, 1.870E-12, 1.330E-12, | |||
| 4218 | 9.480E-13, 7.000E-13, 5.370E-13, 4.170E-13, 3.330E-13, | |||
| 4219 | 2.760E-13, 2.350E-13, 2.040E-13, 1.780E-13, 1.590E-13, | |||
| 4220 | 1.420E-13, 1.230E-13, 1.060E-13, 8.950E-14, 7.450E-14, | |||
| 4221 | 6.060E-14, 5.020E-14, 4.220E-14, 3.610E-14, 3.130E-14, | |||
| 4222 | 2.750E-14, 2.450E-14, 2.190E-14, 1.970E-14, 1.790E-14, | |||
| 4223 | 1.630E-14, 1.490E-14, 1.380E-14, 1.290E-14, 1.220E-14, | |||
| 4224 | 1.170E-14, 1.140E-14, 1.140E-14, 1.180E-14, 1.260E-14, | |||
| 4225 | 1.410E-14, 1.650E-14, 2.040E-14, 2.650E-14, 3.590E-14, | |||
| 4226 | 4.870E-14, 6.410E-14, 8.470E-14, 1.070E-13, 1.320E-13, | |||
| 4227 | 1.660E-13, 2.070E-13, 2.620E-13, 3.210E-13, 3.940E-13, | |||
| 4228 | 4.840E-13, 5.810E-13, 6.840E-13, 7.730E-13, 8.670E-13, | |||
| 4229 | 9.620E-13, 1.060E-12, 1.190E-12, 1.350E-12, 1.560E-12, | |||
| 4230 | 1.850E-12, 2.210E-12, 2.660E-12, 3.140E-12, 3.600E-12, | |||
| 4231 | 3.990E-12, 4.220E-12, 4.360E-12, 4.350E-12, 4.250E-12, | |||
| 4232 | 4.100E-12, 3.990E-12, 3.950E-12, 3.870E-12, 3.830E-12, | |||
| 4233 | 3.820E-12, 3.890E-12, 3.980E-12, 4.060E-12, 4.190E-12, | |||
| 4234 | 4.220E-12, 4.170E-12, 3.900E-12, 3.500E-12, 3.030E-12, | |||
| 4235 | 2.490E-12, 1.990E-12, 1.510E-12, 1.150E-12, 8.680E-13, | |||
| 4236 | 6.530E-13, 4.890E-13, 3.780E-13, 2.920E-13, 2.250E-13, | |||
| 4237 | 1.740E-13, 1.350E-13, 1.070E-13, 8.540E-14, 7.020E-14, | |||
| 4238 | 5.950E-14, 5.130E-14, 4.480E-14, 3.890E-14, 3.340E-14, | |||
| 4239 | 2.940E-14, 2.630E-14, 2.420E-14, 2.300E-14, 2.270E-14, | |||
| 4240 | 2.370E-14, 2.560E-14, 2.780E-14, 3.160E-14, 3.800E-14, | |||
| 4241 | 4.860E-14, 6.250E-14, 8.150E-14, 1.010E-13, 1.240E-13, | |||
| 4242 | 1.490E-13, 1.730E-13, 1.990E-13, 2.220E-13, 2.440E-13, | |||
| 4243 | 2.610E-13, 2.720E-13, 2.850E-13, 2.940E-13, 3.100E-13, | |||
| 4244 | 3.290E-13, 3.500E-13, 3.620E-13, 3.660E-13, 3.700E-13, | |||
| 4245 | 3.720E-13, 3.830E-13, 4.010E-13, 4.260E-13, 4.510E-13, | |||
| 4246 | 4.640E-13, 4.490E-13, 4.050E-13, 3.450E-13, 2.790E-13, | |||
| 4247 | 2.120E-13, 1.460E-13, 9.670E-14, 6.180E-14, 3.980E-14, | |||
| 4248 | 2.630E-14, 1.810E-14, 1.320E-14, 1.030E-14, 8.420E-15, | |||
| 4249 | 7.220E-15, 6.390E-15, 5.780E-15, 5.330E-15, 5.000E-15, | |||
| 4250 | 4.760E-15, 4.610E-15, 4.540E-15, 4.550E-15, 4.640E-15, | |||
| 4251 | 4.810E-15, 5.060E-15, 5.410E-15, 5.870E-15, 6.440E-15, | |||
| 4252 | 7.150E-15, 8.020E-15, 9.100E-15, 1.050E-14, 1.220E-14, | |||
| 4253 | 1.460E-14, 1.800E-14, 2.280E-14, 2.980E-14, 4.020E-14, | |||
| 4254 | 5.530E-14, 7.810E-14, 1.040E-13, 1.310E-13, 1.580E-13, | |||
| 4255 | 1.890E-13, 2.200E-13, 2.540E-13, 3.010E-13, 3.670E-13, | |||
| 4256 | 4.430E-13, 5.420E-13, 6.850E-13, 8.440E-13, 1.040E-12, | |||
| 4257 | 1.310E-12, 1.610E-12, 1.950E-12, 2.380E-12, 2.880E-12, | |||
| 4258 | 3.420E-12, 4.030E-12, 4.650E-12, 5.240E-12, 5.700E-12, | |||
| 4259 | 6.090E-12, 6.390E-12, 6.480E-12, 6.580E-12, 6.660E-12, | |||
| 4260 | 6.700E-12, 6.660E-12, 6.650E-12, 6.800E-12, 7.090E-12, | |||
| 4261 | 7.540E-12, 8.060E-12, 8.620E-12, 8.890E-12, 8.680E-12, | |||
| 4262 | 8.040E-12, 7.000E-12, 5.830E-12, 4.580E-12, 3.490E-12, | |||
| 4263 | 2.710E-12, 2.100E-12, 1.650E-12, 1.310E-12, 1.060E-12, | |||
| 4264 | 8.350E-13, 6.450E-13, 5.020E-13, 3.940E-13, 3.090E-13, | |||
| 4265 | 2.460E-13}; // end section diffs to MT 1.00 | |||
| 4266 | ||||
| 4267 | ||||
| 4268 | // CO2 continuum Ridgeway 1982, implementation of CKD_MT_1.00 | |||
| 4269 | // UNITS OF (CM**3/MOL)*1.E-20 | |||
| 4270 | const Numeric FCO2_ckd_mt_100_v1 = -20.0; | |||
| 4271 | const Numeric FCO2_ckd_mt_100_v2 = 10000.0; | |||
| 4272 | const Numeric FCO2_ckd_mt_100_dv = 10.0; | |||
| 4273 | const int FCO2_ckd_mt_100_npt = 1003; | |||
| 4274 | const double FCO2_ckd_mt_100[FCO2_ckd_mt_100_npt+addF77fields] = { | |||
| 4275 | 0.000e0, 1.1110E-11, 1.0188E-11, | |||
| 4276 | 9.3516E-12, 1.0188E-11, 1.1110E-11, 1.2127E-11, 1.3251E-11, // F17590 | |||
| 4277 | 1.4495E-11, 1.5872E-11, 1.7400E-11, 1.9097E-11, 2.0985E-11, // F17600 | |||
| 4278 | 2.3087E-11, 2.5431E-11, 2.8051E-11, 3.0982E-11, 3.4268E-11, // F17610 | |||
| 4279 | 3.7956E-11, 4.2105E-11, 4.6779E-11, 5.2056E-11, 5.8025E-11, // F17620 | |||
| 4280 | 6.4791E-11, 7.2477E-11, 8.1226E-11, 9.1209E-11, 1.0263E-10, // F17630 | |||
| 4281 | 1.1572E-10, 1.3078E-10, 1.4814E-10, 1.6821E-10, 1.9148E-10, // F17640 | |||
| 4282 | 2.1857E-10, 2.5019E-10, 2.8723E-10, 3.3080E-10, 3.8223E-10, // F17650 | |||
| 4283 | 4.4321E-10, 5.1583E-10, 6.0274E-10, 7.0725E-10, 8.3363E-10, // F17660 | |||
| 4284 | 9.8735E-10, 1.1755E-09, 1.4074E-09, 1.6953E-09, 2.0557E-09, // F17670 | |||
| 4285 | 2.5107E-09, 3.0909E-09, 3.8391E-09, 4.8165E-09, 6.1117E-09, // F17680 | |||
| 4286 | 7.8550E-09, 1.0241E-08, 1.3593E-08, 1.8344E-08, 2.5408E-08, // F17700 | |||
| 4287 | 3.6386E-08, 5.4251E-08, 8.4262E-08, 1.3273E-07, 2.1867E-07, // F17710 | |||
| 4288 | 3.5007E-07, 6.0011E-07, 1.0797E-06, 1.8254E-06, 3.1621E-06, // F17720 | |||
| 4289 | 4.0293E-06, 4.3683E-06, 4.4552E-06, 4.2684E-06, 3.9341E-06, // F17730 | |||
| 4290 | 2.5972E-06, 1.5617E-06, 8.9063E-07, 5.0360E-07, 3.0616E-07, // F17740 | |||
| 4291 | 1.9066E-07, 1.1904E-07, 7.6078E-08, 4.9304E-08, 3.3335E-08, // F17750 | |||
| 4292 | 2.3494E-08, 1.7114E-08, 1.2742E-08, 9.6068E-09, 7.3706E-09, // F17760 | |||
| 4293 | 5.7386E-09, 4.5302E-09, 3.6223E-09, 2.9309E-09, 2.4001E-09, // F17770 | |||
| 4294 | 1.9927E-09, 1.6877E-09, 1.4602E-09, 1.2764E-09, 1.1317E-09, // F17780 | |||
| 4295 | 1.0273E-09, 9.1943E-10, 8.0353E-10, 6.8746E-10, 5.9354E-10, // F17790 | |||
| 4296 | 5.1722E-10, 4.4975E-10, 4.2350E-10, 4.2282E-10, 4.2610E-10, // F17810 | |||
| 4297 | 4.5465E-10, 4.6166E-10, 4.3149E-10, 3.7615E-10, 3.1576E-10, // F17820 | |||
| 4298 | 2.6490E-10, 1.9143E-10, 1.2885E-10, 9.4954E-11, 7.6499E-11, // F17830 | |||
| 4299 | 6.4581E-11, 5.5923E-11, 4.9200E-11, 4.3813E-11, 3.9533E-11, // F17840 | |||
| 4300 | 3.6338E-11, 3.4320E-11, 3.3329E-11, 3.2400E-11, 3.1700E-11, // F17850 | |||
| 4301 | 3.1267E-11, 2.9940E-11, 2.7628E-11, 2.4496E-11, 2.1764E-11, // F17860 | |||
| 4302 | 1.9306E-11, 1.7352E-11, 1.7292E-11, 1.8733E-11, 2.0224E-11, // F17870 | |||
| 4303 | 2.2396E-11, 2.4225E-11, 2.4890E-11, 2.3513E-11, 2.0824E-11, // F17880 | |||
| 4304 | 1.8642E-11, 1.5676E-11, 1.2882E-11, 1.1054E-11, 1.0074E-11, // F17890 | |||
| 4305 | 9.6324E-12, 9.4910E-12, 9.5134E-12, 9.6427E-12, 9.8552E-12, // F17900 | |||
| 4306 | 1.0140E-11, 1.0494E-11, 1.0915E-11, 1.1405E-11, 1.1965E-11, // F17920 | |||
| 4307 | 1.2601E-11, 1.3316E-11, 1.4116E-11, 1.5006E-11, 1.5997E-11, // F17930 | |||
| 4308 | 1.7092E-11, 1.8305E-11, 1.9641E-11, 2.1121E-11, 2.2744E-11, // F17940 | |||
| 4309 | 2.4503E-11, 2.6419E-11, 2.8221E-11, 3.0609E-11, 3.3260E-11, // F17950 | |||
| 4310 | 3.6247E-11, 3.9581E-11, 4.3279E-11, 4.7376E-11, 5.1932E-11, // F17960 | |||
| 4311 | 5.7001E-11, 6.2654E-11, 6.8973E-11, 7.6058E-11, 8.4037E-11, // F17970 | |||
| 4312 | 9.3081E-11, 1.0344E-10, 1.1547E-10, 1.2970E-10, 1.4659E-10, // F17980 | |||
| 4313 | 1.6724E-10, 1.9481E-10, 2.3520E-10, 2.9424E-10, 3.6319E-10, // F17990 | |||
| 4314 | 4.2279E-10, 4.8494E-10, 5.2296E-10, 5.6111E-10, 5.8935E-10, // F18000 | |||
| 4315 | 6.0807E-10, 6.4204E-10, 6.8457E-10, 7.6709E-10, 8.7664E-10, // F18010 | |||
| 4316 | 1.0183E-09, 1.2116E-09, 1.4874E-09, 1.8596E-09, 2.2742E-09, // F18030 | |||
| 4317 | 2.7577E-09, 3.1932E-09, 3.6381E-09, 4.1207E-09, 4.6458E-09, // F18040 | |||
| 4318 | 5.3065E-09, 6.0741E-09, 7.1942E-09, 8.7103E-09, 1.0713E-08, // F18050 | |||
| 4319 | 1.3344E-08, 1.6831E-08, 2.1524E-08, 2.7967E-08, 3.7047E-08, // F18060 | |||
| 4320 | 5.0312E-08, 7.0566E-08, 1.0275E-07, 1.5419E-07, 2.3309E-07, // F18070 | |||
| 4321 | 3.4843E-07, 5.3194E-07, 8.7207E-07, 1.5075E-06, 2.7077E-06, // F18080 | |||
| 4322 | 4.7125E-06, 7.1734E-06, 9.2381E-06, 1.1507E-05, 1.3737E-05, // F18090 | |||
| 4323 | 1.4004E-05, 1.2679E-05, 1.0478E-05, 8.5684E-06, 6.1472E-06, // F18100 | |||
| 4324 | 3.2424E-06, 1.5291E-06, 8.0390E-07, 4.6767E-07, 2.9170E-07, // F18110 | |||
| 4325 | 1.9148E-07, 1.3076E-07, 9.2156E-08, 6.6652E-08, 4.9265E-08, // F18120 | |||
| 4326 | 3.7094E-08, 2.8380E-08, 2.2019E-08, 1.7297E-08, 1.3738E-08, // F18140 | |||
| 4327 | 1.1019E-08, 8.9178E-09, 7.2762E-09, 5.9810E-09, 4.9500E-09, // F18150 | |||
| 4328 | 4.1226E-09, 3.4534E-09, 2.9082E-09, 2.4611E-09, 2.0922E-09, // F18160 | |||
| 4329 | 1.7864E-09, 1.5313E-09, 1.3176E-09, 1.1379E-09, 9.8612E-10, // F18170 | |||
| 4330 | 8.5741E-10, 7.4782E-10, 6.5416E-10, 5.7384E-10, 5.0471E-10, // F18180 | |||
| 4331 | 4.4503E-10, 3.9334E-10, 3.4841E-10, 3.0927E-10, 2.7510E-10, // F18190 | |||
| 4332 | 2.4519E-10, 2.1893E-10, 1.9587E-10, 1.7555E-10, 1.5762E-10, // F18200 | |||
| 4333 | 1.4178E-10, 1.2772E-10, 1.1524E-10, 1.0414E-10, 9.4248E-11, // F18210 | |||
| 4334 | 8.5421E-11, 7.7530E-11, 7.0466E-11, 6.4134E-11, 5.8450E-11, // F18220 | |||
| 4335 | 5.3342E-11, 4.8746E-11, 4.4607E-11, 4.0874E-11, 3.7507E-11, // F18230 | |||
| 4336 | 3.4466E-11, 3.1719E-11, 2.9237E-11, 2.6993E-11, 2.4968E-11, // F18250 | |||
| 4337 | 2.3139E-11, 2.1494E-11, 2.0022E-11, 1.8709E-11, 1.7541E-11, // F18260 | |||
| 4338 | 1.6533E-11, 1.5690E-11, 1.5027E-11, 1.4560E-11, 1.4169E-11, // F18270 | |||
| 4339 | 1.3796E-11, 1.3553E-11, 1.3526E-11, 1.3567E-11, 1.3399E-11, // F18280 | |||
| 4340 | 1.3149E-11, 1.3049E-11, 1.3078E-11, 1.3093E-11, 1.3168E-11, // F18290 | |||
| 4341 | 1.3572E-11, 1.4383E-11, 1.5698E-11, 1.7658E-11, 2.0197E-11, // F18300 | |||
| 4342 | 2.2845E-11, 2.5944E-11, 3.0250E-11, 3.5900E-11, 4.1482E-11, // F18310 | |||
| 4343 | 4.6602E-11, 5.2453E-11, 5.9754E-11, 6.9308E-11, 8.0696E-11, // F18320 | |||
| 4344 | 9.5737E-11, 1.1733E-10, 1.4793E-10, 1.9119E-10, 2.5355E-10, // F18330 | |||
| 4345 | 3.4588E-10, 4.8343E-10, 6.9378E-10, 1.0212E-09, 1.4858E-09, // F18340 | |||
| 4346 | 2.0906E-09, 3.0576E-09, 4.6318E-09, 7.1585E-09, 1.1259E-08, // F18360 | |||
| 4347 | 1.7954E-08, 2.9760E-08, 4.6693E-08, 6.2035E-08, 7.4399E-08, // F18370 | |||
| 4348 | 9.1705E-08, 9.9448E-08, 9.5181E-08, 8.3050E-08, 7.1756E-08, // F18380 | |||
| 4349 | 6.6261E-08, 6.0357E-08, 6.6988E-08, 8.3419E-08, 9.8834E-08, // F18390 | |||
| 4350 | 1.2385E-07, 1.3962E-07, 1.3651E-07, 1.1963E-07, 9.7731E-08, // F18400 | |||
| 4351 | 8.0083E-08, 5.1660E-08, 2.5778E-08, 1.2600E-08, 6.8779E-09, // F18410 | |||
| 4352 | 4.1161E-09, 2.6276E-09, 1.7595E-09, 1.2225E-09, 8.7493E-10, // F18420 | |||
| 4353 | 6.4179E-10, 4.7987E-10, 3.6491E-10, 2.8191E-10, 2.2084E-10, // F18430 | |||
| 4354 | 1.7507E-10, 1.4025E-10, 1.1344E-10, 9.2580E-11, 7.6170E-11, // F18440 | |||
| 4355 | 6.3142E-11, 5.2694E-11, 4.4260E-11, 3.7421E-11, 3.1847E-11, // F18450 | |||
| 4356 | 2.7263E-11, 2.3352E-11, 2.0081E-11, 1.7332E-11, 1.5000E-11, // F18470 | |||
| 4357 | 1.2978E-11, 1.1204E-11, 9.7513E-12, 8.5300E-12, 7.4888E-12, // F18480 | |||
| 4358 | 6.5947E-12, 5.8231E-12, 5.1548E-12, 4.5739E-12, 4.0675E-12, // F18490 | |||
| 4359 | 3.6250E-12, 3.2371E-12, 2.8963E-12, 2.5964E-12, 2.3316E-12, // F18500 | |||
| 4360 | 2.0975E-12, 1.8902E-12, 1.7061E-12, 1.5425E-12, 1.3967E-12, // F18510 | |||
| 4361 | 1.2665E-12, 1.1503E-12, 1.0463E-12, 9.5319E-13, 8.6963E-13, // F18520 | |||
| 4362 | 7.9461E-13, 7.2718E-13, 6.6654E-13, 6.1201E-13, 5.6296E-13, // F18530 | |||
| 4363 | 5.1894E-13, 4.7969E-13, 4.4494E-13, 4.1320E-13, 3.8529E-13, // F18540 | |||
| 4364 | 3.6202E-13, 3.4320E-13, 3.2546E-13, 3.0741E-13, 2.9156E-13, // F18550 | |||
| 4365 | 2.7819E-13, 2.6576E-13, 2.5327E-13, 2.4319E-13, 2.3770E-13, // F18560 | |||
| 4366 | 2.3645E-13, 2.3967E-13, 2.4960E-13, 2.6858E-13, 2.9679E-13, // F18580 | |||
| 4367 | 3.3247E-13, 3.8487E-13, 4.7576E-13, 6.1833E-13, 8.0740E-13, // F18590 | |||
| 4368 | 1.0267E-12, 1.2291E-12, 1.4710E-12, 1.7211E-12, 1.8251E-12, // F18600 | |||
| 4369 | 1.8982E-12, 1.9768E-12, 2.1877E-12, 2.5008E-12, 3.0545E-12, // F18610 | |||
| 4370 | 4.1513E-12, 5.7469E-12, 7.7913E-12, 1.0873E-11, 1.5538E-11, // F18620 | |||
| 4371 | 2.2838E-11, 3.4153E-11, 4.9751E-11, 7.0591E-11, 1.0794E-10, // F18630 | |||
| 4372 | 1.7287E-10, 2.6554E-10, 3.5250E-10, 4.1952E-10, 5.1979E-10, // F18640 | |||
| 4373 | 5.7649E-10, 5.6168E-10, 5.0014E-10, 4.3670E-10, 4.0057E-10, // F18650 | |||
| 4374 | 3.5169E-10, 3.7578E-10, 5.5054E-10, 8.8962E-10, 1.2940E-09, // F18660 | |||
| 4375 | 1.6293E-09, 2.0553E-09, 2.3945E-09, 2.3926E-09, 2.1385E-09, // F18670 | |||
| 4376 | 1.7637E-09, 1.4623E-09, 1.0150E-09, 5.5612E-10, 3.5162E-10, // F18690 | |||
| 4377 | 3.4009E-10, 4.1744E-10, 5.0009E-10, 6.0748E-10, 7.3258E-10, // F18700 | |||
| 4378 | 7.6553E-10, 7.2066E-10, 6.1317E-10, 5.1585E-10, 3.9136E-10, // F18710 | |||
| 4379 | 2.2991E-10, 1.2590E-10, 6.9549E-11, 3.8699E-11, 2.2976E-11, // F18720 | |||
| 4380 | 1.4702E-11, 9.9989E-12, 7.1233E-12, 5.2612E-12, 4.0298E-12, // F18730 | |||
| 4381 | 3.2395E-12, 2.7932E-12, 2.6331E-12, 2.7835E-12, 3.3167E-12, // F18740 | |||
| 4382 | 3.3581E-12, 3.3404E-12, 3.1243E-12, 2.8459E-12, 2.4092E-12, // F18750 | |||
| 4383 | 1.5349E-12, 9.7039E-13, 5.8611E-13, 3.9686E-13, 2.9332E-13, // F18760 | |||
| 4384 | 2.2795E-13, 1.8432E-13, 1.5287E-13, 1.2898E-13, 1.1019E-13, // F18770 | |||
| 4385 | 9.5041E-14, 8.2617E-14, 7.2310E-14, 6.3711E-14, 5.6561E-14, // F18780 | |||
| 4386 | 5.0763E-14, 4.6525E-14, 4.4418E-14, 4.4681E-14, 4.7199E-14, // F18800 | |||
| 4387 | 5.0389E-14, 5.3620E-14, 6.0817E-14, 6.0192E-14, 5.5878E-14, // F18810 | |||
| 4388 | 4.9874E-14, 4.3955E-14, 3.9854E-14, 3.1697E-14, 3.1135E-14, // F18820 | |||
| 4389 | 3.4683E-14, 3.8789E-14, 4.6932E-14, 5.0213E-14, 4.7156E-14, // F18830 | |||
| 4390 | 4.2130E-14, 3.5554E-14, 3.0465E-14, 1.9216E-14, 1.1378E-14, // F18840 | |||
| 4391 | 8.2878E-15, 6.8260E-15, 6.0960E-15, 5.8135E-15, 5.9618E-15, // F18850 | |||
| 4392 | 6.8295E-15, 9.2943E-15, 1.2572E-14, 1.4837E-14, 1.8595E-14, // F18860 | |||
| 4393 | 2.1533E-14, 2.2008E-14, 2.1305E-14, 1.9743E-14, 2.0413E-14, // F18870 | |||
| 4394 | 2.1131E-14, 2.5346E-14, 3.3709E-14, 4.3995E-14, 5.8911E-14, // F18880 | |||
| 4395 | 7.8451E-14, 1.0537E-13, 1.4559E-13, 2.0405E-13, 2.6734E-13, // F18890 | |||
| 4396 | 3.5029E-13, 4.9788E-13, 7.3207E-13, 1.0979E-12, 1.4960E-12, // F18910 | |||
| 4397 | 1.7906E-12, 2.2171E-12, 2.5369E-12, 2.5873E-12, 2.3871E-12, // F18920 | |||
| 4398 | 2.0730E-12, 1.9095E-12, 1.6227E-12, 1.3981E-12, 1.5228E-12, // F18930 | |||
| 4399 | 2.0956E-12, 3.2493E-12, 5.2740E-12, 8.6666E-12, 1.2672E-11, // F18940 | |||
| 4400 | 1.5725E-11, 1.9496E-11, 2.2858E-11, 2.2939E-11, 2.0597E-11, // F18950 | |||
| 4401 | 1.7021E-11, 1.4456E-11, 1.0794E-11, 7.1327E-12, 6.5438E-12, // F18960 | |||
| 4402 | 8.8057E-12, 1.2311E-11, 1.5284E-11, 1.9273E-11, 2.2796E-11, // F18970 | |||
| 4403 | 2.3156E-11, 2.0914E-11, 1.7298E-11, 1.4424E-11, 1.0127E-11, // F18980 | |||
| 4404 | 5.2952E-12, 2.5759E-12, 1.4304E-12, 9.4758E-13, 7.9895E-13, // F18990 | |||
| 4405 | 9.1124E-13, 1.2297E-12, 1.5898E-12, 1.9056E-12, 2.3905E-12, // F19000 | |||
| 4406 | 2.6695E-12, 2.6297E-12, 2.3467E-12, 2.0058E-12, 1.6773E-12, // F19020 | |||
| 4407 | 1.1327E-12, 6.7331E-13, 4.0954E-13, 2.5152E-13, 1.4491E-13, // F19030 | |||
| 4408 | 9.0916E-14, 6.6510E-14, 5.9022E-14, 6.4403E-14, 8.3126E-14, // F19040 | |||
| 4409 | 1.2409E-13, 1.5153E-13, 1.6909E-13, 1.7938E-13, 1.9169E-13, // F19050 | |||
| 4410 | 2.1173E-13, 2.1941E-13, 2.6360E-13, 3.5956E-13, 4.8369E-13, // F19060 | |||
| 4411 | 5.9657E-13, 7.4062E-13, 8.9452E-13, 8.7899E-13, 8.2012E-13, // F19070 | |||
| 4412 | 7.4109E-13, 6.9845E-13, 6.3130E-13, 5.6538E-13, 6.9516E-13, // F19080 | |||
| 4413 | 9.9486E-13, 1.5226E-12, 2.4155E-12, 3.9119E-12, 6.3541E-12, // F19090 | |||
| 4414 | 1.0075E-11, 1.5903E-11, 2.5091E-11, 3.6282E-11, 4.6076E-11, // F19100 | |||
| 4415 | 5.6240E-11, 7.1126E-11, 7.0230E-11, 6.3642E-11, 5.3722E-11, // F19110 | |||
| 4416 | 4.4651E-11, 3.4409E-11, 1.5287E-11, 7.2479E-12, 3.9218E-12, // F19130 | |||
| 4417 | 2.3172E-12, 1.4585E-12, 9.6297E-13, 6.6017E-13, 4.6655E-13, // F19140 | |||
| 4418 | 3.3814E-13, 2.5034E-13, 1.8874E-13, 1.4457E-13, 1.1228E-13, // F19150 | |||
| 4419 | 8.8284E-14, 7.0188E-14, 5.6365E-14, 4.5685E-14, 3.7357E-14, // F19160 | |||
| 4420 | 3.0817E-14, 2.5674E-14, 2.1679E-14, 1.8780E-14, 1.7243E-14, // F19170 | |||
| 4421 | 1.6273E-14, 1.5201E-14, 1.5091E-14, 1.4725E-14, 1.3668E-14, // F19180 | |||
| 4422 | 1.1940E-14, 1.0097E-14, 8.8905E-15, 7.1475E-15, 5.8080E-15, // F19190 | |||
| 4423 | 5.5216E-15, 5.9338E-15, 7.1932E-15, 9.9780E-15, 1.6167E-14, // F19200 | |||
| 4424 | 2.9100E-14, 5.2355E-14, 8.4889E-14, 1.1311E-13, 1.4192E-13, // F19210 | |||
| 4425 | 1.7648E-13, 1.8657E-13, 1.7498E-13, 1.4877E-13, 1.2578E-13, // F19220 | |||
| 4426 | 1.0051E-13, 6.7213E-14, 5.4750E-14, 7.0454E-14, 1.1351E-13, // F19240 | |||
| 4427 | 1.8015E-13, 2.4825E-13, 3.0875E-13, 3.9200E-13, 4.2550E-13, // F19250 | |||
| 4428 | 4.0067E-13, 3.4438E-13, 2.8204E-13, 2.2432E-13, 1.3172E-13, // F19260 | |||
| 4429 | 6.2820E-14, 3.6474E-14, 2.9409E-14, 3.4164E-14, 4.8300E-14, // F19270 | |||
| 4430 | 6.4140E-14, 7.7284E-14, 9.7973E-14, 1.0969E-13, 1.0580E-13, // F19280 | |||
| 4431 | 9.2070E-14, 7.5008E-14, 6.1722E-14, 3.8874E-14, 1.9007E-14, // F19290 | |||
| 4432 | 9.6765E-15, 5.5169E-15, 3.5254E-15, 2.5012E-15, 2.0013E-15, // F19300 | |||
| 4433 | 1.8810E-15, 2.2143E-15, 3.5332E-15, 5.7552E-15, 7.3359E-15, // F19310 | |||
| 4434 | 8.3292E-15, 9.9174E-15, 1.0930E-14, 1.1185E-14, 1.0884E-14, // F19320 | |||
| 4435 | 1.0577E-14, 1.1048E-14, 1.1611E-14, 1.1128E-14, 1.0729E-14, // F19330 | |||
| 4436 | 1.0248E-14, 1.0630E-14, 1.1793E-14, 1.3977E-14, 1.9857E-14, // F19350 | |||
| 4437 | 2.9182E-14, 4.2229E-14, 6.2710E-14, 9.0717E-14, 1.2561E-13, // F19360 | |||
| 4438 | 1.6951E-13, 2.2520E-13, 3.2470E-13, 4.5178E-13, 6.3104E-13, // F19370 | |||
| 4439 | 8.7521E-13, 1.1073E-12, 1.3534E-12, 1.6954E-12, 1.7005E-12, // F19380 | |||
| 4440 | 1.5993E-12, 1.4416E-12, 1.3280E-12, 1.2760E-12, 1.1076E-12, // F19390 | |||
| 4441 | 1.2850E-12, 1.6208E-12, 1.9527E-12, 2.4941E-12, 2.5077E-12, // F19400 | |||
| 4442 | 2.3156E-12, 2.0069E-12, 1.6301E-12, 1.2885E-12, 5.9863E-13, // F19410 | |||
| 4443 | 2.8012E-13, 1.5065E-13, 8.8802E-14, 5.5888E-14, 3.6951E-14, // F19420 | |||
| 4444 | 2.5393E-14, 1.8001E-14, 1.3093E-14, 9.7308E-15, 7.3665E-15, // F19430 | |||
| 4445 | 5.6662E-15, 4.4194E-15, 3.4897E-15, 2.7857E-15, 2.2457E-15, // F19440 | |||
| 4446 | 1.8264E-15, 1.4973E-15, 1.2365E-15, 1.0280E-15, 8.5996E-16, // F19460 | |||
| 4447 | 7.2345E-16, 6.1182E-16, 5.1994E-16, 4.4388E-16, 3.8055E-16, // F19470 | |||
| 4448 | 3.2756E-16, 2.8300E-16, 2.4537E-16, 2.1347E-16, 1.8630E-16, // F19480 | |||
| 4449 | 1.6307E-16, 1.4314E-16, 1.2599E-16, 1.1117E-16, 9.8344E-17, // F19490 | |||
| 4450 | 8.7197E-17, 7.7487E-17, 6.9004E-17, 6.1577E-17, 5.5060E-17, // F19500 | |||
| 4451 | 4.9325E-17, 4.4271E-17, 3.9810E-17, 3.5861E-17, 3.2361E-17, // F19510 | |||
| 4452 | 2.9252E-17, 2.6487E-17, 2.4023E-17, 2.1826E-17, 1.9862E-17, // F19520 | |||
| 4453 | 1.8107E-17, 1.6536E-17, 1.5129E-17, 1.3869E-17, 1.2739E-17, // F19530 | |||
| 4454 | 1.1726E-17, 1.0820E-17, 1.0009E-17, 9.2846E-18, 8.6398E-18, // F19540 | |||
| 4455 | 8.0682E-18, 7.5641E-18, 7.1229E-18, 6.7411E-18, 6.4161E-18, // F19550 | |||
| 4456 | 6.1455E-18, 5.9290E-18, 5.7662E-18, 5.6574E-18, 5.6049E-18, // F19570 | |||
| 4457 | 5.6112E-18, 5.6811E-18, 5.8200E-18, 6.0364E-18, 6.3405E-18, // F19580 | |||
| 4458 | 6.7450E-18, 7.2674E-18, 7.9298E-18, 8.7613E-18, 9.8010E-18, // F19590 | |||
| 4459 | 1.1086E-17, 1.2686E-17, 1.4679E-17, 1.7177E-17, 2.0335E-17, // F19600 | |||
| 4460 | 2.4384E-17, 2.9538E-17, 3.6416E-17, 4.5520E-17, 5.7788E-17, // F19610 | |||
| 4461 | 7.4676E-17, 9.8513E-17, 1.3323E-16, 1.8570E-16, 2.6897E-16, // F19620 | |||
| 4462 | 4.0958E-16, 6.6785E-16, 1.2064E-15, 2.4023E-15, 4.3240E-15, // F19630 | |||
| 4463 | 6.6353E-15, 8.6393E-15, 1.1433E-14, 1.3946E-14, 1.3611E-14, // F19640 | |||
| 4464 | 1.2557E-14, 1.0934E-14, 1.0039E-14, 8.5099E-15, 7.9557E-15, // F19650 | |||
| 4465 | 1.1346E-14, 1.8512E-14, 2.9285E-14, 4.1585E-14, 5.2809E-14, // F19660 | |||
| 4466 | 7.0377E-14, 7.8094E-14, 7.3735E-14, 6.5845E-14, 5.5023E-14, // F19680 | |||
| 4467 | 4.6866E-14, 2.7430E-14, 1.5975E-14, 1.4522E-14, 1.7075E-14, // F19690 | |||
| 4468 | 2.0408E-14, 2.5119E-14, 3.1194E-14, 3.0280E-14, 2.7676E-14, // F19700 | |||
| 4469 | 2.3344E-14, 1.9466E-14, 1.4140E-14, 6.2087E-15, 3.0307E-15, // F19710 | |||
| 4470 | 1.6815E-15, 1.0169E-15, 6.5448E-16, 4.4162E-16, 3.0928E-16, // F19720 | |||
| 4471 | 2.2320E-16, 1.6511E-16, 1.2471E-16, 9.5881E-17, 7.4850E-17, // F19730 | |||
| 4472 | 5.9216E-17, 4.7400E-17, 3.8338E-17, 3.1298E-17, 2.5765E-17, // F19740 | |||
| 4473 | 2.1371E-17, 1.7848E-17, 1.5000E-17, 1.2679E-17, 1.0774E-17, // F19750 | |||
| 4474 | 9.2002E-18, 7.8922E-18, 6.7987E-18, 5.8800E-18, 5.1042E-18, // F19760 | |||
| 4475 | 4.4461E-18, 3.8855E-18, 3.4060E-18, 2.9944E-18, 2.6397E-18, // F19770 | |||
| 4476 | 2.3331E-18}; | |||
| 4477 | ||||
| 4478 | // CO2 continuum Ridgeway 1982, implementation of CKD_MT_2.50 | |||
| 4479 | //Hartmann line coupling: isotopes 1 and 2 | |||
| 4480 | // UNITS OF (CM**3/MOL)*1.E-20 | |||
| 4481 | const Numeric FCO2_ckd_mt_250_v1 = -4.0; | |||
| 4482 | const Numeric FCO2_ckd_mt_250_v2 = 10000.0; | |||
| 4483 | const Numeric FCO2_ckd_mt_250_dv = 2.0; | |||
| 4484 | const int FCO2_ckd_mt_250_npt = 5003; | |||
| 4485 | const double FCO2_ckd_mt_250[FCO2_ckd_mt_250_npt+addF77fields] = { | |||
| 4486 | 8.391e-13, 8.359e-13, | |||
| 4487 | 8.345e-13, 8.359e-13, 8.391e-13, 8.439e-13, 8.500e-13, | |||
| 4488 | 8.573e-13, 8.655e-13, 8.750e-13, 8.859e-13, 8.981e-13, | |||
| 4489 | 9.119e-13, 9.273e-13, 9.442e-13, 9.626e-13, 9.825e-13, | |||
| 4490 | 1.004e-12, 1.027e-12, 1.052e-12, 1.078e-12, 1.106e-12, | |||
| 4491 | 1.135e-12, 1.166e-12, 1.199e-12, 1.233e-12, 1.270e-12, | |||
| 4492 | 1.308e-12, 1.347e-12, 1.389e-12, 1.432e-12, 1.478e-12, | |||
| 4493 | 1.525e-12, 1.574e-12, 1.625e-12, 1.678e-12, 1.734e-12, | |||
| 4494 | 1.791e-12, 1.850e-12, 1.912e-12, 1.976e-12, 2.042e-12, | |||
| 4495 | 2.110e-12, 2.181e-12, 2.254e-12, 2.329e-12, 2.408e-12, | |||
| 4496 | 2.488e-12, 2.572e-12, 2.658e-12, 2.746e-12, 2.838e-12, | |||
| 4497 | 2.933e-12, 3.030e-12, 3.130e-12, 3.234e-12, 3.341e-12, | |||
| 4498 | 3.451e-12, 3.564e-12, 3.681e-12, 3.801e-12, 3.925e-12, | |||
| 4499 | 4.053e-12, 4.184e-12, 4.320e-12, 4.459e-12, 4.603e-12, | |||
| 4500 | 4.750e-12, 4.902e-12, 5.059e-12, 5.220e-12, 5.386e-12, | |||
| 4501 | 5.556e-12, 5.732e-12, 5.912e-12, 6.098e-12, 6.290e-12, | |||
| 4502 | 6.487e-12, 6.689e-12, 6.897e-12, 7.112e-12, 7.333e-12, | |||
| 4503 | 7.560e-12, 7.793e-12, 8.034e-12, 8.281e-12, 8.535e-12, | |||
| 4504 | 8.797e-12, 9.067e-12, 9.344e-12, 9.629e-12, 9.923e-12, | |||
| 4505 | 1.023e-11, 1.054e-11, 1.086e-11, 1.119e-11, 1.152e-11, | |||
| 4506 | 1.187e-11, 1.223e-11, 1.260e-11, 1.298e-11, 1.338e-11, | |||
| 4507 | 1.378e-11, 1.419e-11, 1.462e-11, 1.506e-11, 1.552e-11, | |||
| 4508 | 1.598e-11, 1.646e-11, 1.696e-11, 1.747e-11, 1.799e-11, | |||
| 4509 | 1.854e-11, 1.909e-11, 1.967e-11, 2.026e-11, 2.087e-11, | |||
| 4510 | 2.150e-11, 2.214e-11, 2.281e-11, 2.350e-11, 2.421e-11, | |||
| 4511 | 2.494e-11, 2.569e-11, 2.647e-11, 2.727e-11, 2.810e-11, | |||
| 4512 | 2.895e-11, 2.983e-11, 3.073e-11, 3.167e-11, 3.263e-11, | |||
| 4513 | 3.363e-11, 3.466e-11, 3.572e-11, 3.681e-11, 3.794e-11, | |||
| 4514 | 3.910e-11, 4.031e-11, 4.155e-11, 4.283e-11, 4.416e-11, | |||
| 4515 | 4.552e-11, 4.694e-11, 4.840e-11, 4.991e-11, 5.147e-11, | |||
| 4516 | 5.308e-11, 5.474e-11, 5.646e-11, 5.824e-11, 6.008e-11, | |||
| 4517 | 6.199e-11, 6.395e-11, 6.599e-11, 6.809e-11, 7.027e-11, | |||
| 4518 | 7.253e-11, 7.486e-11, 7.728e-11, 7.978e-11, 8.237e-11, | |||
| 4519 | 8.505e-11, 8.782e-11, 9.070e-11, 9.368e-11, 9.677e-11, | |||
| 4520 | 9.997e-11, 1.033e-10, 1.067e-10, 1.103e-10, 1.140e-10, | |||
| 4521 | 1.178e-10, 1.218e-10, 1.259e-10, 1.302e-10, 1.347e-10, | |||
| 4522 | 1.393e-10, 1.441e-10, 1.491e-10, 1.542e-10, 1.596e-10, | |||
| 4523 | 1.652e-10, 1.710e-10, 1.770e-10, 1.833e-10, 1.899e-10, | |||
| 4524 | 1.966e-10, 2.037e-10, 2.111e-10, 2.187e-10, 2.267e-10, | |||
| 4525 | 2.350e-10, 2.437e-10, 2.527e-10, 2.621e-10, 2.719e-10, | |||
| 4526 | 2.821e-10, 2.928e-10, 3.039e-10, 3.155e-10, 3.276e-10, | |||
| 4527 | 3.403e-10, 3.535e-10, 3.674e-10, 3.818e-10, 3.969e-10, | |||
| 4528 | 4.127e-10, 4.293e-10, 4.466e-10, 4.647e-10, 4.837e-10, | |||
| 4529 | 5.036e-10, 5.245e-10, 5.464e-10, 5.695e-10, 5.937e-10, | |||
| 4530 | 6.191e-10, 6.459e-10, 6.742e-10, 7.039e-10, 7.353e-10, | |||
| 4531 | 7.683e-10, 8.032e-10, 8.400e-10, 8.785e-10, 9.213e-10, | |||
| 4532 | 9.661e-10, 1.013e-09, 1.062e-09, 1.114e-09, 1.169e-09, | |||
| 4533 | 1.226e-09, 1.286e-09, 1.350e-09, 1.417e-09, 1.488e-09, | |||
| 4534 | 1.564e-09, 1.643e-09, 1.728e-09, 1.818e-09, 1.914e-09, | |||
| 4535 | 2.016e-09, 2.126e-09, 2.244e-09, 2.378e-09, 2.522e-09, | |||
| 4536 | 2.677e-09, 2.843e-09, 3.024e-09, 3.220e-09, 3.437e-09, | |||
| 4537 | 3.676e-09, 3.941e-09, 4.236e-09, 4.565e-09, 4.931e-09, | |||
| 4538 | 5.336e-09, 5.784e-09, 6.276e-09, 6.817e-09, 7.410e-09, | |||
| 4539 | 8.108e-09, 9.238e-09, 1.044e-08, 1.167e-08, 1.292e-08, | |||
| 4540 | 1.419e-08, 1.548e-08, 1.679e-08, 1.816e-08, 1.956e-08, | |||
| 4541 | 2.103e-08, 2.258e-08, 2.425e-08, 2.609e-08, 2.815e-08, | |||
| 4542 | 3.051e-08, 3.326e-08, 3.653e-08, 4.040e-08, 4.546e-08, | |||
| 4543 | 5.160e-08, 5.909e-08, 6.836e-08, 7.995e-08, 9.457e-08, | |||
| 4544 | 1.130e-07, 1.366e-07, 1.731e-07, 2.156e-07, 2.655e-07, | |||
| 4545 | 3.241e-07, 3.927e-07, 4.723e-07, 5.639e-07, 6.685e-07, | |||
| 4546 | 7.872e-07, 9.510e-07, 1.199e-06, 1.528e-06, 1.847e-06, | |||
| 4547 | 2.155e-06, 2.453e-06, 2.742e-06, 3.026e-06, 3.308e-06, | |||
| 4548 | 3.594e-06, 3.895e-06, 4.227e-06, 4.609e-06, 5.073e-06, | |||
| 4549 | 5.660e-06, 6.406e-06, 7.410e-06, 8.801e-06, 1.052e-05, | |||
| 4550 | 1.261e-05, 1.512e-05, 1.808e-05, 2.149e-05, 2.535e-05, | |||
| 4551 | 2.970e-05, 3.413e-05, 4.573e-05, 6.122e-05, 7.642e-05, | |||
| 4552 | 9.099e-05, 1.048e-04, 1.176e-04, 1.294e-04, 1.398e-04, | |||
| 4553 | 1.488e-04, 1.561e-04, 1.616e-04, 1.653e-04, 1.670e-04, | |||
| 4554 | 1.666e-04, 1.642e-04, 1.599e-04, 1.538e-04, 1.460e-04, | |||
| 4555 | 1.365e-04, 1.256e-04, 1.132e-04, 9.969e-05, 8.499e-05, | |||
| 4556 | 6.925e-05, 5.260e-05, 4.198e-05, 3.475e-05, 2.933e-05, | |||
| 4557 | 2.457e-05, 2.043e-05, 1.690e-05, 1.394e-05, 1.151e-05, | |||
| 4558 | 9.559e-06, 8.021e-06, 6.826e-06, 5.920e-06, 5.232e-06, | |||
| 4559 | 4.703e-06, 4.285e-06, 3.941e-06, 3.643e-06, 3.368e-06, | |||
| 4560 | 3.106e-06, 2.847e-06, 2.585e-06, 2.316e-06, 2.040e-06, | |||
| 4561 | 1.755e-06, 1.463e-06, 1.165e-06, 9.093e-07, 8.070e-07, | |||
| 4562 | 6.991e-07, 6.009e-07, 5.118e-07, 4.319e-07, 3.612e-07, | |||
| 4563 | 2.996e-07, 2.465e-07, 2.012e-07, 1.633e-07, 1.370e-07, | |||
| 4564 | 1.172e-07, 1.015e-07, 8.892e-08, 7.876e-08, 7.053e-08, | |||
| 4565 | 6.378e-08, 5.817e-08, 5.367e-08, 4.988e-08, 4.660e-08, | |||
| 4566 | 4.372e-08, 4.113e-08, 3.874e-08, 3.651e-08, 3.439e-08, | |||
| 4567 | 3.234e-08, 3.033e-08, 2.836e-08, 2.641e-08, 2.448e-08, | |||
| 4568 | 2.255e-08, 2.062e-08, 1.869e-08, 1.677e-08, 1.532e-08, | |||
| 4569 | 1.417e-08, 1.317e-08, 1.226e-08, 1.143e-08, 1.068e-08, | |||
| 4570 | 1.001e-08, 9.396e-09, 8.846e-09, 8.350e-09, 7.902e-09, | |||
| 4571 | 7.496e-09, 7.125e-09, 6.784e-09, 6.467e-09, 6.171e-09, | |||
| 4572 | 5.892e-09, 5.629e-09, 5.379e-09, 5.161e-09, 4.952e-09, | |||
| 4573 | 4.756e-09, 4.571e-09, 4.396e-09, 4.232e-09, 4.077e-09, | |||
| 4574 | 3.930e-09, 3.792e-09, 3.662e-09, 3.541e-09, 3.426e-09, | |||
| 4575 | 3.320e-09, 3.221e-09, 3.129e-09, 3.045e-09, 2.967e-09, | |||
| 4576 | 2.898e-09, 2.839e-09, 2.788e-09, 2.743e-09, 2.706e-09, | |||
| 4577 | 2.676e-09, 2.653e-09, 2.638e-09, 2.633e-09, 2.640e-09, | |||
| 4578 | 2.661e-09, 2.700e-09, 2.760e-09, 2.844e-09, 2.953e-09, | |||
| 4579 | 3.092e-09, 3.260e-09, 3.459e-09, 3.685e-09, 3.936e-09, | |||
| 4580 | 4.205e-09, 4.482e-09, 4.756e-09, 5.015e-09, 5.255e-09, | |||
| 4581 | 5.479e-09, 5.696e-09, 5.915e-09, 6.139e-09, 6.369e-09, | |||
| 4582 | 6.596e-09, 6.811e-09, 6.999e-09, 7.148e-09, 7.244e-09, | |||
| 4583 | 7.280e-09, 7.252e-09, 7.159e-09, 7.007e-09, 6.799e-09, | |||
| 4584 | 6.547e-09, 6.260e-09, 5.948e-09, 5.618e-09, 5.279e-09, | |||
| 4585 | 4.935e-09, 4.584e-09, 4.224e-09, 3.849e-09, 3.457e-09, | |||
| 4586 | 3.055e-09, 2.658e-09, 2.285e-09, 1.948e-09, 1.661e-09, | |||
| 4587 | 1.429e-09, 1.254e-09, 1.133e-09, 1.060e-09, 1.031e-09, | |||
| 4588 | 1.038e-09, 1.079e-09, 1.151e-09, 1.254e-09, 1.391e-09, | |||
| 4589 | 1.564e-09, 1.777e-09, 2.033e-09, 2.335e-09, 2.682e-09, | |||
| 4590 | 3.072e-09, 3.497e-09, 3.947e-09, 4.407e-09, 4.859e-09, | |||
| 4591 | 5.293e-09, 5.707e-09, 6.108e-09, 6.510e-09, 6.919e-09, | |||
| 4592 | 7.337e-09, 7.762e-09, 8.178e-09, 8.573e-09, 8.923e-09, | |||
| 4593 | 9.211e-09, 9.419e-09, 9.536e-09, 9.554e-09, 9.473e-09, | |||
| 4594 | 9.300e-09, 9.043e-09, 8.715e-09, 8.330e-09, 7.904e-09, | |||
| 4595 | 7.447e-09, 6.968e-09, 6.471e-09, 5.955e-09, 5.414e-09, | |||
| 4596 | 4.843e-09, 4.246e-09, 3.644e-09, 3.054e-09, 2.504e-09, | |||
| 4597 | 2.010e-09, 1.584e-09, 1.234e-09, 9.578e-10, 7.490e-10, | |||
| 4598 | 5.962e-10, 4.887e-10, 4.149e-10, 3.652e-10, 3.309e-10, | |||
| 4599 | 3.067e-10, 2.892e-10, 2.758e-10, 2.650e-10, 2.560e-10, | |||
| 4600 | 2.482e-10, 2.413e-10, 2.351e-10, 2.295e-10, 2.244e-10, | |||
| 4601 | 2.197e-10, 2.154e-10, 2.113e-10, 2.075e-10, 2.039e-10, | |||
| 4602 | 2.005e-10, 1.973e-10, 1.942e-10, 1.912e-10, 1.884e-10, | |||
| 4603 | 1.857e-10, 1.831e-10, 1.805e-10, 1.781e-10, 1.757e-10, | |||
| 4604 | 1.734e-10, 1.712e-10, 1.691e-10, 1.670e-10, 1.649e-10, | |||
| 4605 | 1.629e-10, 1.610e-10, 1.591e-10, 1.573e-10, 1.555e-10, | |||
| 4606 | 1.537e-10, 1.520e-10, 1.503e-10, 1.487e-10, 1.471e-10, | |||
| 4607 | 1.455e-10, 1.440e-10, 1.425e-10, 1.410e-10, 1.396e-10, | |||
| 4608 | 1.381e-10, 1.368e-10, 1.354e-10, 1.341e-10, 1.328e-10, | |||
| 4609 | 1.315e-10, 1.303e-10, 1.290e-10, 1.278e-10, 1.267e-10, | |||
| 4610 | 1.255e-10, 1.244e-10, 1.233e-10, 1.222e-10, 1.211e-10, | |||
| 4611 | 1.201e-10, 1.190e-10, 1.180e-10, 1.170e-10, 1.161e-10, | |||
| 4612 | 1.151e-10, 1.142e-10, 1.133e-10, 1.124e-10, 1.115e-10, | |||
| 4613 | 1.106e-10, 1.098e-10, 1.089e-10, 1.081e-10, 1.073e-10, | |||
| 4614 | 1.065e-10, 1.058e-10, 1.050e-10, 1.043e-10, 1.036e-10, | |||
| 4615 | 1.028e-10, 1.022e-10, 1.015e-10, 1.008e-10, 1.001e-10, | |||
| 4616 | 9.950e-11, 9.887e-11, 9.825e-11, 9.765e-11, 9.705e-11, | |||
| 4617 | 9.647e-11, 9.591e-11, 9.535e-11, 9.480e-11, 9.427e-11, | |||
| 4618 | 9.375e-11, 9.324e-11, 9.274e-11, 9.225e-11, 9.177e-11, | |||
| 4619 | 9.131e-11, 9.085e-11, 9.040e-11, 8.997e-11, 8.954e-11, | |||
| 4620 | 8.913e-11, 8.872e-11, 8.833e-11, 8.794e-11, 8.757e-11, | |||
| 4621 | 8.720e-11, 8.684e-11, 8.650e-11, 8.616e-11, 8.583e-11, | |||
| 4622 | 8.551e-11, 8.520e-11, 8.490e-11, 8.461e-11, 8.432e-11, | |||
| 4623 | 8.405e-11, 8.378e-11, 8.352e-11, 8.327e-11, 8.303e-11, | |||
| 4624 | 8.280e-11, 8.257e-11, 8.236e-11, 8.215e-11, 8.195e-11, | |||
| 4625 | 8.176e-11, 8.158e-11, 8.140e-11, 8.123e-11, 8.107e-11, | |||
| 4626 | 8.092e-11, 8.078e-11, 8.064e-11, 8.051e-11, 8.039e-11, | |||
| 4627 | 8.028e-11, 8.018e-11, 8.008e-11, 7.999e-11, 7.991e-11, | |||
| 4628 | 7.983e-11, 7.976e-11, 7.971e-11, 7.965e-11, 7.961e-11, | |||
| 4629 | 7.957e-11, 7.954e-11, 7.952e-11, 7.951e-11, 7.950e-11, | |||
| 4630 | 7.950e-11, 7.951e-11, 7.952e-11, 7.955e-11, 7.958e-11, | |||
| 4631 | 7.961e-11, 7.966e-11, 7.971e-11, 7.977e-11, 7.984e-11, | |||
| 4632 | 7.991e-11, 8.000e-11, 8.009e-11, 8.018e-11, 8.029e-11, | |||
| 4633 | 8.040e-11, 8.052e-11, 8.065e-11, 8.079e-11, 8.093e-11, | |||
| 4634 | 8.108e-11, 8.124e-11, 8.141e-11, 8.158e-11, 8.176e-11, | |||
| 4635 | 8.195e-11, 8.215e-11, 8.235e-11, 8.257e-11, 8.279e-11, | |||
| 4636 | 8.302e-11, 8.326e-11, 8.350e-11, 8.376e-11, 8.402e-11, | |||
| 4637 | 8.429e-11, 8.457e-11, 8.486e-11, 8.515e-11, 8.546e-11, | |||
| 4638 | 8.577e-11, 8.609e-11, 8.642e-11, 8.676e-11, 8.711e-11, | |||
| 4639 | 8.747e-11, 8.783e-11, 8.821e-11, 8.859e-11, 8.898e-11, | |||
| 4640 | 8.939e-11, 8.980e-11, 9.022e-11, 9.065e-11, 9.109e-11, | |||
| 4641 | 9.155e-11, 9.201e-11, 9.248e-11, 9.296e-11, 9.345e-11, | |||
| 4642 | 9.395e-11, 9.446e-11, 9.499e-11, 9.552e-11, 9.606e-11, | |||
| 4643 | 9.662e-11, 9.719e-11, 9.776e-11, 9.835e-11, 9.895e-11, | |||
| 4644 | 9.956e-11, 1.002e-10, 1.008e-10, 1.015e-10, 1.021e-10, | |||
| 4645 | 1.028e-10, 1.035e-10, 1.042e-10, 1.049e-10, 1.056e-10, | |||
| 4646 | 1.063e-10, 1.071e-10, 1.079e-10, 1.086e-10, 1.094e-10, | |||
| 4647 | 1.102e-10, 1.111e-10, 1.119e-10, 1.127e-10, 1.136e-10, | |||
| 4648 | 1.145e-10, 1.154e-10, 1.163e-10, 1.172e-10, 1.181e-10, | |||
| 4649 | 1.191e-10, 1.201e-10, 1.211e-10, 1.221e-10, 1.231e-10, | |||
| 4650 | 1.241e-10, 1.252e-10, 1.263e-10, 1.274e-10, 1.285e-10, | |||
| 4651 | 1.296e-10, 1.308e-10, 1.319e-10, 1.331e-10, 1.344e-10, | |||
| 4652 | 1.356e-10, 1.368e-10, 1.381e-10, 1.394e-10, 1.407e-10, | |||
| 4653 | 1.421e-10, 1.435e-10, 1.448e-10, 1.463e-10, 1.477e-10, | |||
| 4654 | 1.492e-10, 1.506e-10, 1.522e-10, 1.537e-10, 1.553e-10, | |||
| 4655 | 1.568e-10, 1.585e-10, 1.601e-10, 1.618e-10, 1.635e-10, | |||
| 4656 | 1.652e-10, 1.670e-10, 1.688e-10, 1.706e-10, 1.725e-10, | |||
| 4657 | 1.744e-10, 1.763e-10, 1.782e-10, 1.802e-10, 1.823e-10, | |||
| 4658 | 1.843e-10, 1.864e-10, 1.886e-10, 1.907e-10, 1.929e-10, | |||
| 4659 | 1.952e-10, 1.975e-10, 1.998e-10, 2.022e-10, 2.046e-10, | |||
| 4660 | 2.071e-10, 2.096e-10, 2.122e-10, 2.148e-10, 2.174e-10, | |||
| 4661 | 2.202e-10, 2.229e-10, 2.257e-10, 2.286e-10, 2.315e-10, | |||
| 4662 | 2.345e-10, 2.375e-10, 2.406e-10, 2.438e-10, 2.470e-10, | |||
| 4663 | 2.503e-10, 2.536e-10, 2.570e-10, 2.605e-10, 2.641e-10, | |||
| 4664 | 2.677e-10, 2.714e-10, 2.752e-10, 2.791e-10, 2.831e-10, | |||
| 4665 | 2.871e-10, 2.913e-10, 2.955e-10, 2.999e-10, 3.043e-10, | |||
| 4666 | 3.089e-10, 3.136e-10, 3.184e-10, 3.234e-10, 3.285e-10, | |||
| 4667 | 3.337e-10, 3.391e-10, 3.447e-10, 3.505e-10, 3.564e-10, | |||
| 4668 | 3.626e-10, 3.689e-10, 3.754e-10, 3.822e-10, 3.892e-10, | |||
| 4669 | 3.965e-10, 4.041e-10, 4.120e-10, 4.203e-10, 4.290e-10, | |||
| 4670 | 4.381e-10, 4.478e-10, 4.581e-10, 4.691e-10, 4.807e-10, | |||
| 4671 | 4.931e-10, 5.062e-10, 5.200e-10, 5.346e-10, 5.499e-10, | |||
| 4672 | 5.659e-10, 5.826e-10, 6.002e-10, 6.189e-10, 6.392e-10, | |||
| 4673 | 6.606e-10, 6.834e-10, 7.080e-10, 7.348e-10, 7.643e-10, | |||
| 4674 | 7.974e-10, 8.351e-10, 8.791e-10, 9.301e-10, 9.894e-10, | |||
| 4675 | 1.059e-09, 1.140e-09, 1.235e-09, 1.346e-09, 1.472e-09, | |||
| 4676 | 1.616e-09, 1.777e-09, 1.954e-09, 2.147e-09, 2.347e-09, | |||
| 4677 | 2.549e-09, 2.747e-09, 2.941e-09, 3.126e-09, 3.309e-09, | |||
| 4678 | 3.589e-09, 3.848e-09, 4.066e-09, 4.238e-09, 4.365e-09, | |||
| 4679 | 4.445e-09, 4.481e-09, 4.474e-09, 4.426e-09, 4.341e-09, | |||
| 4680 | 4.223e-09, 4.076e-09, 3.905e-09, 3.717e-09, 3.516e-09, | |||
| 4681 | 3.308e-09, 3.100e-09, 2.897e-09, 2.701e-09, 2.514e-09, | |||
| 4682 | 2.332e-09, 2.156e-09, 1.985e-09, 1.819e-09, 1.659e-09, | |||
| 4683 | 1.635e-09, 1.630e-09, 1.634e-09, 1.642e-09, 1.654e-09, | |||
| 4684 | 1.668e-09, 1.685e-09, 1.705e-09, 1.728e-09, 1.754e-09, | |||
| 4685 | 1.785e-09, 1.819e-09, 1.859e-09, 1.903e-09, 1.952e-09, | |||
| 4686 | 2.007e-09, 2.068e-09, 2.134e-09, 2.207e-09, 2.287e-09, | |||
| 4687 | 2.374e-09, 2.469e-09, 2.573e-09, 2.686e-09, 2.810e-09, | |||
| 4688 | 2.947e-09, 3.098e-09, 3.285e-09, 3.494e-09, 3.729e-09, | |||
| 4689 | 3.999e-09, 4.311e-09, 4.677e-09, 5.110e-09, 5.628e-09, | |||
| 4690 | 6.239e-09, 6.963e-09, 7.806e-09, 8.772e-09, 9.860e-09, | |||
| 4691 | 1.106e-08, 1.236e-08, 1.375e-08, 1.519e-08, 1.666e-08, | |||
| 4692 | 1.817e-08, 1.962e-08, 2.240e-08, 2.516e-08, 2.762e-08, | |||
| 4693 | 2.977e-08, 3.157e-08, 3.303e-08, 3.411e-08, 3.479e-08, | |||
| 4694 | 3.524e-08, 3.533e-08, 3.506e-08, 3.445e-08, 3.353e-08, | |||
| 4695 | 3.236e-08, 3.096e-08, 2.939e-08, 2.769e-08, 2.589e-08, | |||
| 4696 | 2.404e-08, 2.215e-08, 2.024e-08, 1.832e-08, 1.640e-08, | |||
| 4697 | 1.449e-08, 1.261e-08, 1.203e-08, 1.188e-08, 1.185e-08, | |||
| 4698 | 1.188e-08, 1.195e-08, 1.205e-08, 1.216e-08, 1.228e-08, | |||
| 4699 | 1.250e-08, 1.278e-08, 1.307e-08, 1.337e-08, 1.369e-08, | |||
| 4700 | 1.402e-08, 1.436e-08, 1.474e-08, 1.513e-08, 1.556e-08, | |||
| 4701 | 1.601e-08, 1.651e-08, 1.703e-08, 1.760e-08, 1.821e-08, | |||
| 4702 | 1.886e-08, 1.957e-08, 2.032e-08, 2.119e-08, 2.213e-08, | |||
| 4703 | 2.313e-08, 2.420e-08, 2.534e-08, 2.656e-08, 2.785e-08, | |||
| 4704 | 2.923e-08, 3.070e-08, 3.228e-08, 3.396e-08, 3.577e-08, | |||
| 4705 | 3.772e-08, 3.981e-08, 4.207e-08, 4.451e-08, 4.715e-08, | |||
| 4706 | 5.001e-08, 5.313e-08, 5.654e-08, 6.027e-08, 6.438e-08, | |||
| 4707 | 6.891e-08, 7.395e-08, 7.959e-08, 8.594e-08, 9.315e-08, | |||
| 4708 | 1.014e-07, 1.109e-07, 1.220e-07, 1.351e-07, 1.506e-07, | |||
| 4709 | 1.691e-07, 1.914e-07, 2.184e-07, 2.511e-07, 2.910e-07, | |||
| 4710 | 3.396e-07, 3.986e-07, 4.703e-07, 5.565e-07, 6.598e-07, | |||
| 4711 | 7.824e-07, 9.260e-07, 1.092e-06, 1.282e-06, 1.495e-06, | |||
| 4712 | 1.730e-06, 1.984e-06, 2.254e-06, 2.533e-06, 2.816e-06, | |||
| 4713 | 3.100e-06, 3.386e-06, 3.683e-06, 3.999e-06, 4.343e-06, | |||
| 4714 | 4.721e-06, 5.140e-06, 5.603e-06, 6.119e-06, 6.699e-06, | |||
| 4715 | 7.361e-06, 8.132e-06, 9.049e-06, 1.017e-05, 1.155e-05, | |||
| 4716 | 1.329e-05, 1.549e-05, 1.827e-05, 2.178e-05, 2.619e-05, | |||
| 4717 | 3.169e-05, 3.845e-05, 4.668e-05, 5.656e-05, 6.822e-05, | |||
| 4718 | 8.175e-05, 9.719e-05, 1.145e-04, 1.334e-04, 1.537e-04, | |||
| 4719 | 1.748e-04, 1.960e-04, 2.167e-04, 2.363e-04, 2.549e-04, | |||
| 4720 | 2.731e-04, 2.911e-04, 3.094e-04, 3.277e-04, 3.458e-04, | |||
| 4721 | 3.629e-04, 3.782e-04, 3.910e-04, 4.003e-04, 4.058e-04, | |||
| 4722 | 4.069e-04, 4.038e-04, 3.964e-04, 3.853e-04, 3.709e-04, | |||
| 4723 | 3.538e-04, 3.348e-04, 3.143e-04, 2.928e-04, 2.707e-04, | |||
| 4724 | 2.481e-04, 2.250e-04, 2.010e-04, 1.760e-04, 1.504e-04, | |||
| 4725 | 1.250e-04, 1.010e-04, 7.907e-05, 6.005e-05, 4.430e-05, | |||
| 4726 | 3.180e-05, 2.231e-05, 1.544e-05, 1.069e-05, 7.481e-06, | |||
| 4727 | 5.397e-06, 4.055e-06, 3.178e-06, 2.581e-06, 2.153e-06, | |||
| 4728 | 1.827e-06, 1.568e-06, 1.357e-06, 1.182e-06, 1.035e-06, | |||
| 4729 | 9.114e-07, 8.059e-07, 7.156e-07, 6.378e-07, 5.706e-07, | |||
| 4730 | 5.122e-07, 4.612e-07, 4.165e-07, 3.771e-07, 3.424e-07, | |||
| 4731 | 3.116e-07, 2.843e-07, 2.599e-07, 2.381e-07, 2.186e-07, | |||
| 4732 | 2.010e-07, 1.852e-07, 1.709e-07, 1.580e-07, 1.463e-07, | |||
| 4733 | 1.356e-07, 1.259e-07, 1.171e-07, 1.090e-07, 1.017e-07, | |||
| 4734 | 9.489e-08, 8.868e-08, 8.297e-08, 7.772e-08, 7.288e-08, | |||
| 4735 | 6.841e-08, 6.428e-08, 6.045e-08, 5.691e-08, 5.362e-08, | |||
| 4736 | 5.057e-08, 4.773e-08, 4.508e-08, 4.262e-08, 4.032e-08, | |||
| 4737 | 3.818e-08, 3.617e-08, 3.430e-08, 3.255e-08, 3.090e-08, | |||
| 4738 | 2.936e-08, 2.791e-08, 2.655e-08, 2.527e-08, 2.407e-08, | |||
| 4739 | 2.294e-08, 2.187e-08, 2.087e-08, 1.992e-08, 1.902e-08, | |||
| 4740 | 1.818e-08, 1.738e-08, 1.662e-08, 1.590e-08, 1.522e-08, | |||
| 4741 | 1.458e-08, 1.397e-08, 1.339e-08, 1.284e-08, 1.232e-08, | |||
| 4742 | 1.183e-08, 1.136e-08, 1.091e-08, 1.048e-08, 1.008e-08, | |||
| 4743 | 9.691e-09, 9.322e-09, 8.971e-09, 8.636e-09, 8.316e-09, | |||
| 4744 | 8.011e-09, 7.720e-09, 7.441e-09, 7.175e-09, 6.921e-09, | |||
| 4745 | 6.677e-09, 6.444e-09, 6.221e-09, 6.008e-09, 5.803e-09, | |||
| 4746 | 5.607e-09, 5.419e-09, 5.239e-09, 5.066e-09, 4.900e-09, | |||
| 4747 | 4.740e-09, 4.587e-09, 4.440e-09, 4.299e-09, 4.163e-09, | |||
| 4748 | 4.033e-09, 3.907e-09, 3.787e-09, 3.671e-09, 3.559e-09, | |||
| 4749 | 3.451e-09, 3.347e-09, 3.247e-09, 3.151e-09, 3.058e-09, | |||
| 4750 | 2.969e-09, 2.883e-09, 2.799e-09, 2.719e-09, 2.642e-09, | |||
| 4751 | 2.567e-09, 2.495e-09, 2.425e-09, 2.357e-09, 2.292e-09, | |||
| 4752 | 2.229e-09, 2.169e-09, 2.110e-09, 2.053e-09, 1.998e-09, | |||
| 4753 | 1.945e-09, 1.893e-09, 1.843e-09, 1.795e-09, 1.748e-09, | |||
| 4754 | 1.703e-09, 1.659e-09, 1.617e-09, 1.576e-09, 1.536e-09, | |||
| 4755 | 1.497e-09, 1.460e-09, 1.424e-09, 1.388e-09, 1.354e-09, | |||
| 4756 | 1.321e-09, 1.289e-09, 1.258e-09, 1.227e-09, 1.198e-09, | |||
| 4757 | 1.169e-09, 1.142e-09, 1.115e-09, 1.088e-09, 1.063e-09, | |||
| 4758 | 1.038e-09, 1.014e-09, 9.908e-10, 9.681e-10, 9.460e-10, | |||
| 4759 | 9.246e-10, 9.037e-10, 8.834e-10, 8.636e-10, 8.444e-10, | |||
| 4760 | 8.257e-10, 8.074e-10, 7.897e-10, 7.724e-10, 7.556e-10, | |||
| 4761 | 7.393e-10, 7.233e-10, 7.078e-10, 6.927e-10, 6.779e-10, | |||
| 4762 | 6.636e-10, 6.496e-10, 6.359e-10, 6.226e-10, 6.097e-10, | |||
| 4763 | 5.970e-10, 5.847e-10, 5.727e-10, 5.610e-10, 5.495e-10, | |||
| 4764 | 5.384e-10, 5.275e-10, 5.169e-10, 5.065e-10, 4.964e-10, | |||
| 4765 | 4.865e-10, 4.769e-10, 4.675e-10, 4.583e-10, 4.493e-10, | |||
| 4766 | 4.406e-10, 4.320e-10, 4.236e-10, 4.155e-10, 4.075e-10, | |||
| 4767 | 3.997e-10, 3.921e-10, 3.846e-10, 3.774e-10, 3.703e-10, | |||
| 4768 | 3.633e-10, 3.565e-10, 3.499e-10, 3.434e-10, 3.370e-10, | |||
| 4769 | 3.308e-10, 3.248e-10, 3.188e-10, 3.130e-10, 3.073e-10, | |||
| 4770 | 3.018e-10, 2.963e-10, 2.910e-10, 2.858e-10, 2.807e-10, | |||
| 4771 | 2.757e-10, 2.708e-10, 2.660e-10, 2.613e-10, 2.567e-10, | |||
| 4772 | 2.523e-10, 2.479e-10, 2.436e-10, 2.393e-10, 2.352e-10, | |||
| 4773 | 2.312e-10, 2.272e-10, 2.233e-10, 2.195e-10, 2.158e-10, | |||
| 4774 | 2.121e-10, 2.086e-10, 2.051e-10, 2.016e-10, 1.983e-10, | |||
| 4775 | 1.950e-10, 1.917e-10, 1.886e-10, 1.855e-10, 1.824e-10, | |||
| 4776 | 1.794e-10, 1.765e-10, 1.736e-10, 1.708e-10, 1.680e-10, | |||
| 4777 | 1.653e-10, 1.627e-10, 1.601e-10, 1.575e-10, 1.550e-10, | |||
| 4778 | 1.525e-10, 1.501e-10, 1.478e-10, 1.454e-10, 1.431e-10, | |||
| 4779 | 1.409e-10, 1.387e-10, 1.366e-10, 1.344e-10, 1.324e-10, | |||
| 4780 | 1.303e-10, 1.283e-10, 1.264e-10, 1.244e-10, 1.225e-10, | |||
| 4781 | 1.207e-10, 1.189e-10, 1.171e-10, 1.153e-10, 1.136e-10, | |||
| 4782 | 1.119e-10, 1.102e-10, 1.086e-10, 1.070e-10, 1.054e-10, | |||
| 4783 | 1.039e-10, 1.023e-10, 1.008e-10, 9.937e-11, 9.793e-11, | |||
| 4784 | 9.651e-11, 9.512e-11, 9.375e-11, 9.241e-11, 9.109e-11, | |||
| 4785 | 8.979e-11, 8.852e-11, 8.726e-11, 8.603e-11, 8.483e-11, | |||
| 4786 | 8.364e-11, 8.247e-11, 8.132e-11, 8.020e-11, 7.909e-11, | |||
| 4787 | 7.800e-11, 7.693e-11, 7.588e-11, 7.485e-11, 7.384e-11, | |||
| 4788 | 7.284e-11, 7.186e-11, 7.090e-11, 6.995e-11, 6.902e-11, | |||
| 4789 | 6.811e-11, 6.721e-11, 6.633e-11, 6.546e-11, 6.461e-11, | |||
| 4790 | 6.377e-11, 6.295e-11, 6.214e-11, 6.135e-11, 6.057e-11, | |||
| 4791 | 5.980e-11, 5.905e-11, 5.831e-11, 5.758e-11, 5.687e-11, | |||
| 4792 | 5.617e-11, 5.548e-11, 5.481e-11, 5.415e-11, 5.350e-11, | |||
| 4793 | 5.286e-11, 5.224e-11, 5.163e-11, 5.103e-11, 5.045e-11, | |||
| 4794 | 4.989e-11, 4.934e-11, 4.881e-11, 4.830e-11, 4.781e-11, | |||
| 4795 | 4.734e-11, 4.689e-11, 4.646e-11, 4.605e-11, 4.565e-11, | |||
| 4796 | 4.527e-11, 4.489e-11, 4.453e-11, 4.417e-11, 4.381e-11, | |||
| 4797 | 4.346e-11, 4.312e-11, 4.279e-11, 4.247e-11, 4.216e-11, | |||
| 4798 | 4.187e-11, 4.160e-11, 4.136e-11, 4.114e-11, 4.097e-11, | |||
| 4799 | 4.084e-11, 4.075e-11, 4.073e-11, 4.077e-11, 4.089e-11, | |||
| 4800 | 4.110e-11, 4.142e-11, 4.185e-11, 4.238e-11, 4.301e-11, | |||
| 4801 | 4.372e-11, 4.448e-11, 4.527e-11, 4.604e-11, 4.677e-11, | |||
| 4802 | 4.742e-11, 4.798e-11, 4.844e-11, 4.879e-11, 4.905e-11, | |||
| 4803 | 4.924e-11, 4.936e-11, 4.940e-11, 4.939e-11, 4.937e-11, | |||
| 4804 | 4.935e-11, 4.938e-11, 4.946e-11, 4.963e-11, 4.987e-11, | |||
| 4805 | 5.018e-11, 5.057e-11, 5.100e-11, 5.147e-11, 5.195e-11, | |||
| 4806 | 5.242e-11, 5.285e-11, 5.321e-11, 5.346e-11, 5.358e-11, | |||
| 4807 | 5.352e-11, 5.327e-11, 5.283e-11, 5.217e-11, 5.133e-11, | |||
| 4808 | 5.034e-11, 4.918e-11, 4.786e-11, 4.643e-11, 4.492e-11, | |||
| 4809 | 4.338e-11, 4.186e-11, 4.042e-11, 3.908e-11, 3.789e-11, | |||
| 4810 | 3.685e-11, 3.598e-11, 3.527e-11, 3.472e-11, 3.430e-11, | |||
| 4811 | 3.402e-11, 3.385e-11, 3.379e-11, 3.382e-11, 3.395e-11, | |||
| 4812 | 3.420e-11, 3.466e-11, 3.519e-11, 3.579e-11, 3.645e-11, | |||
| 4813 | 3.718e-11, 3.798e-11, 3.886e-11, 3.982e-11, 4.088e-11, | |||
| 4814 | 4.204e-11, 4.331e-11, 4.471e-11, 4.626e-11, 4.800e-11, | |||
| 4815 | 4.996e-11, 5.219e-11, 5.475e-11, 5.769e-11, 6.108e-11, | |||
| 4816 | 6.494e-11, 6.930e-11, 7.414e-11, 7.941e-11, 8.501e-11, | |||
| 4817 | 9.086e-11, 9.693e-11, 1.029e-10, 1.087e-10, 1.142e-10, | |||
| 4818 | 1.193e-10, 1.240e-10, 1.282e-10, 1.342e-10, 1.412e-10, | |||
| 4819 | 1.485e-10, 1.559e-10, 1.639e-10, 1.725e-10, 1.821e-10, | |||
| 4820 | 1.928e-10, 2.047e-10, 2.175e-10, 2.312e-10, 2.454e-10, | |||
| 4821 | 2.596e-10, 2.735e-10, 2.867e-10, 2.988e-10, 3.094e-10, | |||
| 4822 | 3.182e-10, 3.248e-10, 3.291e-10, 3.308e-10, 3.298e-10, | |||
| 4823 | 3.260e-10, 3.195e-10, 3.101e-10, 3.000e-10, 2.891e-10, | |||
| 4824 | 2.769e-10, 2.635e-10, 2.493e-10, 2.347e-10, 2.204e-10, | |||
| 4825 | 2.068e-10, 1.944e-10, 1.836e-10, 1.746e-10, 1.675e-10, | |||
| 4826 | 1.622e-10, 1.586e-10, 1.565e-10, 1.559e-10, 1.564e-10, | |||
| 4827 | 1.579e-10, 1.604e-10, 1.636e-10, 1.675e-10, 1.721e-10, | |||
| 4828 | 1.774e-10, 1.833e-10, 1.899e-10, 1.973e-10, 2.055e-10, | |||
| 4829 | 2.146e-10, 2.247e-10, 2.360e-10, 2.486e-10, 2.626e-10, | |||
| 4830 | 2.784e-10, 2.960e-10, 3.158e-10, 3.380e-10, 3.630e-10, | |||
| 4831 | 3.913e-10, 4.234e-10, 4.599e-10, 5.020e-10, 5.507e-10, | |||
| 4832 | 6.075e-10, 6.737e-10, 7.509e-10, 8.409e-10, 9.452e-10, | |||
| 4833 | 1.066e-09, 1.203e-09, 1.360e-09, 1.535e-09, 1.730e-09, | |||
| 4834 | 1.945e-09, 2.179e-09, 2.436e-09, 2.721e-09, 3.044e-09, | |||
| 4835 | 3.417e-09, 3.853e-09, 4.362e-09, 4.955e-09, 5.639e-09, | |||
| 4836 | 6.417e-09, 7.287e-09, 8.241e-09, 9.269e-09, 1.035e-08, | |||
| 4837 | 1.145e-08, 1.256e-08, 1.365e-08, 1.475e-08, 1.589e-08, | |||
| 4838 | 1.710e-08, 1.842e-08, 1.988e-08, 2.149e-08, 2.326e-08, | |||
| 4839 | 2.520e-08, 2.731e-08, 2.962e-08, 3.215e-08, 3.498e-08, | |||
| 4840 | 3.823e-08, 4.199e-08, 4.646e-08, 5.180e-08, 5.819e-08, | |||
| 4841 | 6.582e-08, 7.484e-08, 8.539e-08, 9.756e-08, 1.114e-07, | |||
| 4842 | 1.270e-07, 1.443e-07, 1.635e-07, 1.848e-07, 2.090e-07, | |||
| 4843 | 2.371e-07, 2.706e-07, 3.111e-07, 3.601e-07, 4.190e-07, | |||
| 4844 | 4.892e-07, 5.717e-07, 6.668e-07, 7.748e-07, 8.947e-07, | |||
| 4845 | 1.025e-06, 1.162e-06, 1.301e-06, 1.439e-06, 1.570e-06, | |||
| 4846 | 1.692e-06, 1.808e-06, 1.920e-06, 2.034e-06, 2.150e-06, | |||
| 4847 | 2.269e-06, 2.386e-06, 2.499e-06, 2.600e-06, 2.684e-06, | |||
| 4848 | 2.746e-06, 2.781e-06, 2.788e-06, 2.768e-06, 2.720e-06, | |||
| 4849 | 2.648e-06, 2.556e-06, 2.448e-06, 2.328e-06, 2.198e-06, | |||
| 4850 | 2.063e-06, 1.923e-06, 1.779e-06, 1.628e-06, 1.469e-06, | |||
| 4851 | 1.300e-06, 1.126e-06, 9.526e-07, 7.885e-07, 6.394e-07, | |||
| 4852 | 5.112e-07, 4.064e-07, 3.262e-07, 2.698e-07, 2.352e-07, | |||
| 4853 | 2.206e-07, 2.235e-07, 2.429e-07, 2.784e-07, 3.302e-07, | |||
| 4854 | 3.995e-07, 4.880e-07, 5.968e-07, 7.277e-07, 8.811e-07, | |||
| 4855 | 1.056e-06, 1.251e-06, 1.461e-06, 1.680e-06, 1.901e-06, | |||
| 4856 | 2.116e-06, 2.321e-06, 2.519e-06, 2.715e-06, 2.913e-06, | |||
| 4857 | 3.115e-06, 3.321e-06, 3.526e-06, 3.724e-06, 3.905e-06, | |||
| 4858 | 4.059e-06, 4.181e-06, 4.261e-06, 4.295e-06, 4.283e-06, | |||
| 4859 | 4.225e-06, 4.126e-06, 3.991e-06, 3.826e-06, 3.637e-06, | |||
| 4860 | 3.432e-06, 3.215e-06, 2.989e-06, 2.755e-06, 2.511e-06, | |||
| 4861 | 2.254e-06, 1.985e-06, 1.706e-06, 1.429e-06, 1.166e-06, | |||
| 4862 | 9.250e-07, 7.135e-07, 5.356e-07, 3.921e-07, 2.814e-07, | |||
| 4863 | 1.988e-07, 1.398e-07, 9.915e-08, 7.137e-08, 5.280e-08, | |||
| 4864 | 4.038e-08, 3.192e-08, 2.601e-08, 2.164e-08, 1.836e-08, | |||
| 4865 | 1.578e-08, 1.371e-08, 1.199e-08, 1.056e-08, 9.353e-09, | |||
| 4866 | 8.321e-09, 7.436e-09, 6.672e-09, 6.010e-09, 5.433e-09, | |||
| 4867 | 4.929e-09, 4.487e-09, 4.098e-09, 3.754e-09, 3.448e-09, | |||
| 4868 | 3.174e-09, 2.929e-09, 2.708e-09, 2.507e-09, 2.325e-09, | |||
| 4869 | 2.159e-09, 2.006e-09, 1.866e-09, 1.738e-09, 1.619e-09, | |||
| 4870 | 1.510e-09, 1.409e-09, 1.316e-09, 1.230e-09, 1.149e-09, | |||
| 4871 | 1.074e-09, 1.003e-09, 9.372e-10, 8.757e-10, 8.186e-10, | |||
| 4872 | 7.661e-10, 7.179e-10, 6.740e-10, 6.339e-10, 5.974e-10, | |||
| 4873 | 5.641e-10, 5.335e-10, 5.053e-10, 4.791e-10, 4.548e-10, | |||
| 4874 | 4.321e-10, 4.109e-10, 3.909e-10, 3.722e-10, 3.546e-10, | |||
| 4875 | 3.380e-10, 3.224e-10, 3.076e-10, 2.936e-10, 2.804e-10, | |||
| 4876 | 2.680e-10, 2.562e-10, 2.451e-10, 2.346e-10, 2.246e-10, | |||
| 4877 | 2.153e-10, 2.064e-10, 1.981e-10, 1.901e-10, 1.826e-10, | |||
| 4878 | 1.755e-10, 1.687e-10, 1.623e-10, 1.562e-10, 1.503e-10, | |||
| 4879 | 1.448e-10, 1.395e-10, 1.344e-10, 1.296e-10, 1.250e-10, | |||
| 4880 | 1.206e-10, 1.165e-10, 1.125e-10, 1.087e-10, 1.050e-10, | |||
| 4881 | 1.015e-10, 9.822e-11, 9.506e-11, 9.203e-11, 8.915e-11, | |||
| 4882 | 8.640e-11, 8.377e-11, 8.127e-11, 7.888e-11, 7.660e-11, | |||
| 4883 | 7.442e-11, 7.234e-11, 7.035e-11, 6.844e-11, 6.661e-11, | |||
| 4884 | 6.486e-11, 6.316e-11, 6.154e-11, 5.998e-11, 5.850e-11, | |||
| 4885 | 5.710e-11, 5.582e-11, 5.460e-11, 5.344e-11, 5.234e-11, | |||
| 4886 | 5.132e-11, 5.040e-11, 4.961e-11, 4.896e-11, 4.845e-11, | |||
| 4887 | 4.806e-11, 4.774e-11, 4.742e-11, 4.702e-11, 4.652e-11, | |||
| 4888 | 4.594e-11, 4.527e-11, 4.451e-11, 4.366e-11, 4.274e-11, | |||
| 4889 | 4.172e-11, 4.063e-11, 3.946e-11, 3.822e-11, 3.693e-11, | |||
| 4890 | 3.560e-11, 3.428e-11, 3.293e-11, 3.155e-11, 3.014e-11, | |||
| 4891 | 2.872e-11, 2.734e-11, 2.603e-11, 2.482e-11, 2.376e-11, | |||
| 4892 | 2.286e-11, 2.211e-11, 2.146e-11, 2.088e-11, 2.032e-11, | |||
| 4893 | 1.980e-11, 1.930e-11, 1.882e-11, 1.836e-11, 1.792e-11, | |||
| 4894 | 1.749e-11, 1.708e-11, 1.669e-11, 1.630e-11, 1.593e-11, | |||
| 4895 | 1.557e-11, 1.522e-11, 1.488e-11, 1.456e-11, 1.424e-11, | |||
| 4896 | 1.392e-11, 1.362e-11, 1.333e-11, 1.304e-11, 1.276e-11, | |||
| 4897 | 1.249e-11, 1.223e-11, 1.197e-11, 1.172e-11, 1.147e-11, | |||
| 4898 | 1.124e-11, 1.100e-11, 1.078e-11, 1.056e-11, 1.034e-11, | |||
| 4899 | 1.013e-11, 9.924e-12, 9.723e-12, 9.528e-12, 9.336e-12, | |||
| 4900 | 9.149e-12, 8.967e-12, 8.789e-12, 8.615e-12, 8.445e-12, | |||
| 4901 | 8.278e-12, 8.116e-12, 7.957e-12, 7.802e-12, 7.650e-12, | |||
| 4902 | 7.502e-12, 7.357e-12, 7.215e-12, 7.076e-12, 6.940e-12, | |||
| 4903 | 6.807e-12, 6.677e-12, 6.550e-12, 6.426e-12, 6.304e-12, | |||
| 4904 | 6.185e-12, 6.068e-12, 5.954e-12, 5.842e-12, 5.732e-12, | |||
| 4905 | 5.625e-12, 5.520e-12, 5.417e-12, 5.316e-12, 5.217e-12, | |||
| 4906 | 5.121e-12, 5.026e-12, 4.933e-12, 4.842e-12, 4.753e-12, | |||
| 4907 | 4.665e-12, 4.580e-12, 4.496e-12, 4.414e-12, 4.333e-12, | |||
| 4908 | 4.254e-12, 4.176e-12, 4.100e-12, 4.025e-12, 3.952e-12, | |||
| 4909 | 3.880e-12, 3.810e-12, 3.741e-12, 3.673e-12, 3.607e-12, | |||
| 4910 | 3.542e-12, 3.478e-12, 3.415e-12, 3.353e-12, 3.293e-12, | |||
| 4911 | 3.233e-12, 3.175e-12, 3.118e-12, 3.062e-12, 3.007e-12, | |||
| 4912 | 2.953e-12, 2.899e-12, 2.847e-12, 2.796e-12, 2.746e-12, | |||
| 4913 | 2.696e-12, 2.648e-12, 2.600e-12, 2.554e-12, 2.508e-12, | |||
| 4914 | 2.463e-12, 2.418e-12, 2.375e-12, 2.332e-12, 2.290e-12, | |||
| 4915 | 2.249e-12, 2.208e-12, 2.168e-12, 2.129e-12, 2.090e-12, | |||
| 4916 | 2.053e-12, 2.015e-12, 1.979e-12, 1.943e-12, 1.908e-12, | |||
| 4917 | 1.873e-12, 1.839e-12, 1.805e-12, 1.772e-12, 1.740e-12, | |||
| 4918 | 1.708e-12, 1.677e-12, 1.646e-12, 1.616e-12, 1.586e-12, | |||
| 4919 | 1.557e-12, 1.528e-12, 1.500e-12, 1.472e-12, 1.445e-12, | |||
| 4920 | 1.418e-12, 1.391e-12, 1.365e-12, 1.340e-12, 1.314e-12, | |||
| 4921 | 1.290e-12, 1.265e-12, 1.241e-12, 1.218e-12, 1.195e-12, | |||
| 4922 | 1.172e-12, 1.150e-12, 1.128e-12, 1.106e-12, 1.085e-12, | |||
| 4923 | 1.064e-12, 1.043e-12, 1.023e-12, 1.003e-12, 9.835e-13, | |||
| 4924 | 9.643e-13, 9.453e-13, 9.267e-13, 9.084e-13, 8.904e-13, | |||
| 4925 | 8.727e-13, 8.553e-13, 8.382e-13, 8.213e-13, 8.048e-13, | |||
| 4926 | 7.885e-13, 7.725e-13, 7.568e-13, 7.414e-13, 7.262e-13, | |||
| 4927 | 7.113e-13, 6.966e-13, 6.822e-13, 6.680e-13, 6.541e-13, | |||
| 4928 | 6.404e-13, 6.270e-13, 6.138e-13, 6.009e-13, 5.882e-13, | |||
| 4929 | 5.757e-13, 5.634e-13, 5.514e-13, 5.396e-13, 5.280e-13, | |||
| 4930 | 5.167e-13, 5.055e-13, 4.946e-13, 4.839e-13, 4.734e-13, | |||
| 4931 | 4.631e-13, 4.531e-13, 4.432e-13, 4.336e-13, 4.241e-13, | |||
| 4932 | 4.149e-13, 4.059e-13, 3.971e-13, 3.885e-13, 3.801e-13, | |||
| 4933 | 3.720e-13, 3.640e-13, 3.562e-13, 3.487e-13, 3.414e-13, | |||
| 4934 | 3.342e-13, 3.274e-13, 3.207e-13, 3.142e-13, 3.080e-13, | |||
| 4935 | 3.020e-13, 2.963e-13, 2.908e-13, 2.856e-13, 2.806e-13, | |||
| 4936 | 2.759e-13, 2.715e-13, 2.673e-13, 2.635e-13, 2.600e-13, | |||
| 4937 | 2.569e-13, 2.542e-13, 2.519e-13, 2.500e-13, 2.487e-13, | |||
| 4938 | 2.479e-13, 2.477e-13, 2.483e-13, 2.498e-13, 2.524e-13, | |||
| 4939 | 2.562e-13, 2.614e-13, 2.684e-13, 2.776e-13, 2.894e-13, | |||
| 4940 | 3.045e-13, 3.235e-13, 3.472e-13, 3.765e-13, 4.123e-13, | |||
| 4941 | 4.554e-13, 5.064e-13, 5.654e-13, 6.321e-13, 7.055e-13, | |||
| 4942 | 7.844e-13, 8.666e-13, 9.498e-13, 1.032e-12, 1.111e-12, | |||
| 4943 | 1.186e-12, 1.257e-12, 1.322e-12, 1.377e-12, 1.473e-12, | |||
| 4944 | 1.580e-12, 1.690e-12, 1.806e-12, 1.930e-12, 2.066e-12, | |||
| 4945 | 2.217e-12, 2.386e-12, 2.572e-12, 2.771e-12, 2.983e-12, | |||
| 4946 | 3.199e-12, 3.414e-12, 3.619e-12, 3.810e-12, 3.980e-12, | |||
| 4947 | 4.123e-12, 4.235e-12, 4.311e-12, 4.348e-12, 4.343e-12, | |||
| 4948 | 4.296e-12, 4.204e-12, 4.069e-12, 3.891e-12, 3.711e-12, | |||
| 4949 | 3.520e-12, 3.310e-12, 3.085e-12, 2.854e-12, 2.622e-12, | |||
| 4950 | 2.400e-12, 2.198e-12, 2.022e-12, 1.879e-12, 1.772e-12, | |||
| 4951 | 1.703e-12, 1.673e-12, 1.680e-12, 1.723e-12, 1.799e-12, | |||
| 4952 | 1.911e-12, 2.055e-12, 2.231e-12, 2.440e-12, 2.683e-12, | |||
| 4953 | 2.960e-12, 3.271e-12, 3.620e-12, 4.012e-12, 4.456e-12, | |||
| 4954 | 4.958e-12, 5.520e-12, 6.142e-12, 6.818e-12, 7.538e-12, | |||
| 4955 | 8.289e-12, 9.052e-12, 9.821e-12, 1.060e-11, 1.140e-11, | |||
| 4956 | 1.226e-11, 1.320e-11, 1.426e-11, 1.547e-11, 1.686e-11, | |||
| 4957 | 1.846e-11, 2.030e-11, 2.243e-11, 2.487e-11, 2.767e-11, | |||
| 4958 | 3.089e-11, 3.452e-11, 3.858e-11, 4.305e-11, 4.791e-11, | |||
| 4959 | 5.309e-11, 5.851e-11, 6.412e-11, 6.995e-11, 7.609e-11, | |||
| 4960 | 8.271e-11, 8.987e-11, 9.758e-11, 1.058e-10, 1.146e-10, | |||
| 4961 | 1.237e-10, 1.331e-10, 1.428e-10, 1.530e-10, 1.638e-10, | |||
| 4962 | 1.755e-10, 1.886e-10, 2.036e-10, 2.212e-10, 2.418e-10, | |||
| 4963 | 2.662e-10, 2.949e-10, 3.287e-10, 3.677e-10, 4.130e-10, | |||
| 4964 | 4.648e-10, 5.232e-10, 5.877e-10, 6.574e-10, 7.307e-10, | |||
| 4965 | 8.058e-10, 8.802e-10, 9.540e-10, 1.027e-09, 1.102e-09, | |||
| 4966 | 1.181e-09, 1.268e-09, 1.365e-09, 1.476e-09, 1.601e-09, | |||
| 4967 | 1.744e-09, 1.908e-09, 2.099e-09, 2.323e-09, 2.589e-09, | |||
| 4968 | 2.904e-09, 3.278e-09, 3.721e-09, 4.237e-09, 4.828e-09, | |||
| 4969 | 5.491e-09, 6.214e-09, 6.977e-09, 7.752e-09, 8.508e-09, | |||
| 4970 | 9.225e-09, 9.899e-09, 1.055e-08, 1.120e-08, 1.187e-08, | |||
| 4971 | 1.256e-08, 1.325e-08, 1.395e-08, 1.461e-08, 1.520e-08, | |||
| 4972 | 1.569e-08, 1.605e-08, 1.626e-08, 1.631e-08, 1.620e-08, | |||
| 4973 | 1.594e-08, 1.553e-08, 1.501e-08, 1.439e-08, 1.370e-08, | |||
| 4974 | 1.296e-08, 1.219e-08, 1.139e-08, 1.055e-08, 9.668e-09, | |||
| 4975 | 8.719e-09, 7.720e-09, 6.699e-09, 5.699e-09, 4.763e-09, | |||
| 4976 | 3.920e-09, 3.193e-09, 2.592e-09, 2.116e-09, 1.754e-09, | |||
| 4977 | 1.496e-09, 1.322e-09, 1.222e-09, 1.179e-09, 1.188e-09, | |||
| 4978 | 1.242e-09, 1.341e-09, 1.488e-09, 1.691e-09, 1.963e-09, | |||
| 4979 | 2.320e-09, 2.783e-09, 3.375e-09, 4.124e-09, 5.059e-09, | |||
| 4980 | 6.212e-09, 7.615e-09, 9.297e-09, 1.128e-08, 1.359e-08, | |||
| 4981 | 1.623e-08, 1.920e-08, 2.246e-08, 2.598e-08, 2.967e-08, | |||
| 4982 | 3.341e-08, 3.709e-08, 4.060e-08, 4.393e-08, 4.715e-08, | |||
| 4983 | 5.035e-08, 5.359e-08, 5.689e-08, 6.020e-08, 6.340e-08, | |||
| 4984 | 6.637e-08, 6.892e-08, 7.091e-08, 7.222e-08, 7.275e-08, | |||
| 4985 | 7.249e-08, 7.146e-08, 6.970e-08, 6.732e-08, 6.443e-08, | |||
| 4986 | 6.112e-08, 5.751e-08, 5.370e-08, 4.974e-08, 4.570e-08, | |||
| 4987 | 4.155e-08, 3.726e-08, 3.279e-08, 2.817e-08, 2.355e-08, | |||
| 4988 | 1.910e-08, 1.501e-08, 1.141e-08, 8.412e-09, 6.023e-09, | |||
| 4989 | 4.215e-09, 2.923e-09, 2.033e-09, 1.455e-09, 1.093e-09, | |||
| 4990 | 8.740e-10, 7.431e-10, 6.659e-10, 6.264e-10, 6.148e-10, | |||
| 4991 | 6.290e-10, 6.704e-10, 7.425e-10, 8.507e-10, 1.003e-09, | |||
| 4992 | 1.207e-09, 1.473e-09, 1.814e-09, 2.240e-09, 2.764e-09, | |||
| 4993 | 3.393e-09, 4.135e-09, 4.986e-09, 5.942e-09, 6.983e-09, | |||
| 4994 | 8.082e-09, 9.200e-09, 1.030e-08, 1.135e-08, 1.236e-08, | |||
| 4995 | 1.334e-08, 1.434e-08, 1.536e-08, 1.642e-08, 1.749e-08, | |||
| 4996 | 1.854e-08, 1.954e-08, 2.042e-08, 2.114e-08, 2.167e-08, | |||
| 4997 | 2.198e-08, 2.205e-08, 2.189e-08, 2.153e-08, 2.099e-08, | |||
| 4998 | 2.030e-08, 1.949e-08, 1.859e-08, 1.763e-08, 1.662e-08, | |||
| 4999 | 1.556e-08, 1.445e-08, 1.325e-08, 1.197e-08, 1.060e-08, | |||
| 5000 | 9.205e-09, 7.832e-09, 6.544e-09, 5.383e-09, 4.378e-09, | |||
| 5001 | 3.539e-09, 2.863e-09, 2.326e-09, 1.907e-09, 1.578e-09, | |||
| 5002 | 1.311e-09, 1.088e-09, 8.975e-10, 7.318e-10, 5.895e-10, | |||
| 5003 | 4.686e-10, 3.686e-10, 2.875e-10, 2.242e-10, 1.750e-10, | |||
| 5004 | 1.380e-10, 1.104e-10, 8.948e-11, 7.378e-11, 6.180e-11, | |||
| 5005 | 5.251e-11, 4.520e-11, 3.940e-11, 3.475e-11, 3.099e-11, | |||
| 5006 | 2.792e-11, 2.537e-11, 2.323e-11, 2.141e-11, 1.985e-11, | |||
| 5007 | 1.850e-11, 1.734e-11, 1.633e-11, 1.545e-11, 1.468e-11, | |||
| 5008 | 1.399e-11, 1.338e-11, 1.281e-11, 1.228e-11, 1.179e-11, | |||
| 5009 | 1.133e-11, 1.091e-11, 1.055e-11, 1.019e-11, 9.838e-12, | |||
| 5010 | 9.494e-12, 9.161e-12, 8.845e-12, 8.544e-12, 8.258e-12, | |||
| 5011 | 7.982e-12, 7.708e-12, 7.428e-12, 7.141e-12, 6.853e-12, | |||
| 5012 | 6.574e-12, 6.319e-12, 6.101e-12, 5.933e-12, 5.825e-12, | |||
| 5013 | 5.790e-12, 5.845e-12, 6.018e-12, 6.355e-12, 6.862e-12, | |||
| 5014 | 7.521e-12, 8.372e-12, 9.455e-12, 1.076e-11, 1.231e-11, | |||
| 5015 | 1.415e-11, 1.635e-11, 1.900e-11, 2.233e-11, 2.688e-11, | |||
| 5016 | 3.335e-11, 4.316e-11, 5.277e-11, 6.203e-11, 7.088e-11, | |||
| 5017 | 7.925e-11, 8.706e-11, 9.420e-11, 1.005e-10, 1.059e-10, | |||
| 5018 | 1.101e-10, 1.130e-10, 1.145e-10, 1.146e-10, 1.132e-10, | |||
| 5019 | 1.104e-10, 1.063e-10, 1.008e-10, 9.418e-11, 8.642e-11, | |||
| 5020 | 7.766e-11, 6.805e-11, 5.779e-11, 4.724e-11, 3.706e-11, | |||
| 5021 | 2.875e-11, 2.362e-11, 1.918e-11, 1.520e-11, 1.168e-11, | |||
| 5022 | 8.671e-12, 6.195e-12, 4.263e-12, 2.844e-12, 1.873e-12, | |||
| 5023 | 1.259e-12, 8.916e-13, 6.808e-13, 5.494e-13, 4.535e-13, | |||
| 5024 | 3.758e-13, 3.113e-13, 2.571e-13, 2.110e-13, 1.714e-13, | |||
| 5025 | 1.372e-13, 1.074e-13, 8.140e-14, 5.888e-14, 3.992e-14, | |||
| 5026 | 2.574e-14, 2.098e-14, 1.985e-14, 1.894e-14, 1.804e-14, | |||
| 5027 | 1.721e-14, 1.645e-14, 1.570e-14, 1.509e-14, 1.449e-14, | |||
| 5028 | 1.389e-14, 1.336e-14, 1.291e-14, 1.238e-14, 1.200e-14, | |||
| 5029 | 1.155e-14, 1.117e-14, 1.079e-14, 1.042e-14, 1.004e-14, | |||
| 5030 | 9.736e-15, 9.434e-15, 9.132e-15, 8.830e-15, 8.604e-15, | |||
| 5031 | 8.302e-15, 8.075e-15, 7.849e-15, 7.623e-15, 7.381e-15, | |||
| 5032 | 7.170e-15, 6.974e-15, 6.777e-15, 6.589e-15, 6.408e-15, | |||
| 5033 | 6.234e-15, 6.068e-15, 5.909e-15, 5.751e-15, 5.600e-15, | |||
| 5034 | 5.457e-15, 5.321e-15, 5.185e-15, 5.057e-15, 4.928e-15, | |||
| 5035 | 4.808e-15, 4.694e-15, 4.581e-15, 4.475e-15, 4.370e-15, | |||
| 5036 | 4.272e-15, 4.174e-15, 4.083e-15, 3.992e-15, 3.909e-15, | |||
| 5037 | 3.834e-15, 3.758e-15, 3.691e-15, 3.623e-15, 3.562e-15, | |||
| 5038 | 3.509e-15, 3.464e-15, 3.426e-15, 3.396e-15, 3.374e-15, | |||
| 5039 | 3.351e-15, 3.343e-15, 3.336e-15, 3.343e-15, 3.358e-15, | |||
| 5040 | 3.374e-15, 3.396e-15, 3.434e-15, 3.472e-15, 3.517e-15, | |||
| 5041 | 3.562e-15, 3.608e-15, 3.653e-15, 3.706e-15, 3.751e-15, | |||
| 5042 | 3.437e-14, 7.989e-14, 1.282e-13, 1.776e-13, 2.263e-13, | |||
| 5043 | 2.729e-13, 3.172e-13, 3.605e-13, 4.054e-13, 4.547e-13, | |||
| 5044 | 5.102e-13, 5.724e-13, 6.399e-13, 7.079e-13, 7.639e-13, | |||
| 5045 | 8.028e-13, 8.255e-13, 8.329e-13, 8.264e-13, 8.071e-13, | |||
| 5046 | 7.764e-13, 7.358e-13, 6.868e-13, 6.310e-13, 5.700e-13, | |||
| 5047 | 5.051e-13, 4.376e-13, 3.681e-13, 2.968e-13, 2.234e-13, | |||
| 5048 | 1.473e-13, 6.888e-14, 3.200e-15, 3.147e-15, 3.087e-15, | |||
| 5049 | 3.011e-15, 2.898e-15, 2.755e-15, 2.611e-15, 2.483e-15, | |||
| 5050 | 2.392e-15, 2.340e-15, 2.317e-15, 2.317e-15, 2.332e-15, | |||
| 5051 | 2.347e-15, 2.385e-15, 2.430e-15, 2.491e-15, 2.558e-15, | |||
| 5052 | 2.619e-15, 3.956e-14, 8.813e-14, 1.397e-13, 1.926e-13, | |||
| 5053 | 2.457e-13, 2.970e-13, 3.453e-13, 3.918e-13, 4.390e-13, | |||
| 5054 | 4.899e-13, 5.472e-13, 6.123e-13, 6.845e-13, 7.615e-13, | |||
| 5055 | 8.299e-13, 8.795e-13, 9.111e-13, 9.260e-13, 9.252e-13, | |||
| 5056 | 9.099e-13, 8.817e-13, 8.421e-13, 7.925e-13, 7.350e-13, | |||
| 5057 | 6.711e-13, 6.022e-13, 5.297e-13, 4.544e-13, 3.767e-13, | |||
| 5058 | 2.965e-13, 2.132e-13, 1.265e-13, 3.808e-14, 2.408e-15, | |||
| 5059 | 2.302e-15, 2.158e-15, 1.985e-15, 1.796e-15, 1.615e-15, | |||
| 5060 | 1.449e-15, 1.313e-15, 1.177e-15, 1.057e-15, 9.509e-16, | |||
| 5061 | 8.604e-16, 7.849e-16, 7.336e-16, 6.928e-16, 6.589e-16, | |||
| 5062 | 6.257e-16, 5.947e-16, 5.698e-16, 5.494e-16, 5.321e-16, | |||
| 5063 | 5.155e-16, 5.004e-16, 4.875e-16, 4.770e-16, 4.679e-16, | |||
| 5064 | 4.604e-16, 4.528e-16, 4.475e-16, 4.430e-16, 4.408e-16, | |||
| 5065 | 4.385e-16, 4.377e-16, 4.385e-16, 4.400e-16, 4.438e-16, | |||
| 5066 | 4.498e-16, 4.574e-16, 4.664e-16, 4.777e-16, 4.936e-16, | |||
| 5067 | 5.155e-16, 5.442e-16, 5.781e-16, 6.166e-16, 6.581e-16, | |||
| 5068 | 7.011e-16, 7.479e-16, 8.000e-16, 8.528e-16, 9.057e-16, | |||
| 5069 | 9.509e-16, 9.887e-16, 1.019e-15, 1.049e-15, 1.079e-15, | |||
| 5070 | 1.117e-15, 1.170e-15, 1.230e-15, 1.291e-15, 1.351e-15, | |||
| 5071 | 1.404e-15, 1.457e-15, 1.509e-15, 1.555e-15, 1.592e-15, | |||
| 5072 | 1.623e-15, 1.645e-15, 1.660e-15, 1.660e-15, 1.660e-15, | |||
| 5073 | 1.660e-15, 1.660e-15, 1.653e-15, 1.638e-15, 1.623e-15, | |||
| 5074 | 1.608e-15, 1.585e-15, 1.555e-15, 1.532e-15, 1.502e-15, | |||
| 5075 | 1.487e-15, 1.487e-15, 1.502e-15, 1.509e-15, 1.525e-15, | |||
| 5076 | 1.540e-15, 1.547e-15, 1.547e-15, 1.555e-15, 1.570e-15, | |||
| 5077 | 1.592e-15, 1.638e-15, 1.691e-15, 1.751e-15, 1.826e-15, | |||
| 5078 | 1.917e-15, 2.015e-15, 2.136e-15, 2.264e-15, 2.408e-15, | |||
| 5079 | 2.543e-15, 2.687e-15, 2.830e-15, 2.981e-15, 3.140e-15, | |||
| 5080 | 3.321e-15, 3.517e-15, 1.344e-14, 5.071e-14, 9.298e-14, | |||
| 5081 | 1.386e-13, 1.864e-13, 2.353e-13, 2.838e-13, 3.317e-13, | |||
| 5082 | 3.798e-13, 4.276e-13, 4.770e-13, 5.299e-13, 5.879e-13, | |||
| 5083 | 6.531e-13, 7.277e-13, 8.135e-13, 9.128e-13, 1.028e-12, | |||
| 5084 | 1.163e-12, 1.320e-12, 1.506e-12, 1.723e-12, 1.983e-12, | |||
| 5085 | 2.292e-12, 2.657e-12, 3.080e-12, 3.560e-12, 4.093e-12, | |||
| 5086 | 4.664e-12, 5.252e-12, 5.837e-12, 6.395e-12, 6.924e-12, | |||
| 5087 | 7.424e-12, 7.909e-12, 8.394e-12, 8.890e-12, 9.398e-12, | |||
| 5088 | 9.911e-12, 1.042e-11, 1.092e-11, 1.140e-11, 1.184e-11, | |||
| 5089 | 1.226e-11, 1.268e-11, 1.311e-11, 1.360e-11, 1.420e-11, | |||
| 5090 | 1.499e-11, 1.603e-11, 1.740e-11, 1.916e-11, 2.136e-11, | |||
| 5091 | 2.401e-11, 2.709e-11, 3.051e-11, 3.419e-11, 3.796e-11, | |||
| 5092 | 4.166e-11, 4.519e-11, 4.858e-11, 5.189e-11, 5.528e-11, | |||
| 5093 | 5.883e-11, 6.257e-11, 6.644e-11, 7.032e-11, 7.407e-11, | |||
| 5094 | 7.751e-11, 8.044e-11, 8.273e-11, 8.424e-11, 8.491e-11, | |||
| 5095 | 8.472e-11, 8.371e-11, 8.193e-11, 7.954e-11, 7.660e-11, | |||
| 5096 | 7.327e-11, 6.964e-11, 6.579e-11, 6.175e-11, 5.748e-11, | |||
| 5097 | 5.295e-11, 4.807e-11, 4.289e-11, 3.757e-11, 3.230e-11, | |||
| 5098 | 2.731e-11, 2.278e-11, 1.881e-11, 1.546e-11, 1.273e-11, | |||
| 5099 | 1.058e-11, 8.955e-12, 7.746e-12, 6.902e-12, 6.331e-12, | |||
| 5100 | 5.989e-12, 5.820e-12, 5.808e-12, 5.927e-12, 6.175e-12, | |||
| 5101 | 6.552e-12, 7.059e-12, 7.708e-12, 8.512e-12, 9.506e-12, | |||
| 5102 | 1.072e-11, 1.220e-11, 1.402e-11, 1.623e-11, 1.889e-11, | |||
| 5103 | 2.204e-11, 2.573e-11, 2.996e-11, 3.477e-11, 4.016e-11, | |||
| 5104 | 4.617e-11, 5.289e-11, 6.051e-11, 6.933e-11, 7.972e-11, | |||
| 5105 | 9.209e-11, 1.068e-10, 1.243e-10, 1.447e-10, 1.684e-10, | |||
| 5106 | 1.953e-10, 2.254e-10, 2.582e-10, 2.933e-10, 3.297e-10, | |||
| 5107 | 3.662e-10, 4.014e-10, 4.345e-10, 4.655e-10, 4.951e-10, | |||
| 5108 | 5.248e-10, 5.554e-10, 5.872e-10, 6.200e-10, 6.526e-10, | |||
| 5109 | 6.838e-10, 7.115e-10, 7.342e-10, 7.503e-10, 7.590e-10, | |||
| 5110 | 7.597e-10, 7.526e-10, 7.380e-10, 7.170e-10, 6.905e-10, | |||
| 5111 | 6.597e-10, 6.255e-10, 5.889e-10, 5.506e-10, 5.107e-10, | |||
| 5112 | 4.691e-10, 4.252e-10, 3.786e-10, 3.296e-10, 2.797e-10, | |||
| 5113 | 2.307e-10, 1.848e-10, 1.440e-10, 1.091e-10, 8.078e-11, | |||
| 5114 | 5.881e-11, 4.268e-11, 3.141e-11, 2.402e-11, 1.953e-11, | |||
| 5115 | 1.711e-11, 1.615e-11, 1.625e-11, 1.722e-11, 1.901e-11, | |||
| 5116 | 2.170e-11, 2.541e-11, 3.033e-11, 3.670e-11, 4.480e-11, | |||
| 5117 | 5.496e-11, 6.753e-11, 8.287e-11, 1.013e-10, 1.232e-10, | |||
| 5118 | 1.486e-10, 1.776e-10, 2.100e-10, 2.453e-10, 2.826e-10, | |||
| 5119 | 3.207e-10, 3.585e-10, 3.947e-10, 4.295e-10, 4.634e-10, | |||
| 5120 | 4.975e-10, 5.327e-10, 5.691e-10, 6.066e-10, 6.440e-10, | |||
| 5121 | 6.801e-10, 7.130e-10, 7.410e-10, 7.624e-10, 7.761e-10, | |||
| 5122 | 7.814e-10, 7.782e-10, 7.670e-10, 7.483e-10, 7.233e-10, | |||
| 5123 | 6.931e-10, 6.588e-10, 6.215e-10, 5.819e-10, 5.402e-10, | |||
| 5124 | 4.966e-10, 4.506e-10, 4.017e-10, 3.503e-10, 2.981e-10, | |||
| 5125 | 2.468e-10, 1.987e-10, 1.552e-10, 1.179e-10, 8.705e-11, | |||
| 5126 | 6.278e-11, 4.457e-11, 3.136e-11, 2.219e-11, 1.601e-11, | |||
| 5127 | 1.191e-11, 9.181e-12, 7.312e-12, 6.003e-12, 5.040e-12, | |||
| 5128 | 4.304e-12, 3.722e-12, 3.250e-12, 2.861e-12, 2.533e-12, | |||
| 5129 | 2.254e-12, 2.016e-12, 1.812e-12, 1.637e-12, 1.491e-12, | |||
| 5130 | 1.370e-12, 1.275e-12, 1.205e-12, 1.164e-12, 1.153e-12, | |||
| 5131 | 1.179e-12, 1.248e-12, 1.370e-12, 1.561e-12, 1.839e-12, | |||
| 5132 | 2.232e-12, 2.761e-12, 3.467e-12, 4.391e-12, 5.580e-12, | |||
| 5133 | 7.078e-12, 8.932e-12, 1.117e-11, 1.382e-11, 1.688e-11, | |||
| 5134 | 2.031e-11, 2.403e-11, 2.792e-11, 3.188e-11, 3.573e-11, | |||
| 5135 | 3.941e-11, 4.294e-11, 4.645e-11, 5.000e-11, 5.367e-11, | |||
| 5136 | 5.743e-11, 6.123e-11, 6.491e-11, 6.837e-11, 7.141e-11, | |||
| 5137 | 7.392e-11, 7.576e-11, 7.687e-11, 7.720e-11, 7.678e-11, | |||
| 5138 | 7.567e-11, 7.396e-11, 7.187e-11, 6.938e-11, 6.665e-11, | |||
| 5139 | 6.373e-11, 6.070e-11, 5.757e-11, 5.426e-11, 5.070e-11, | |||
| 5140 | 4.683e-11, 4.269e-11, 3.841e-11, 3.420e-11, 3.020e-11, | |||
| 5141 | 2.654e-11, 2.330e-11, 2.050e-11, 1.812e-11, 1.611e-11, | |||
| 5142 | 1.439e-11, 1.291e-11, 1.158e-11, 1.037e-11, 9.206e-12, | |||
| 5143 | 8.084e-12, 7.010e-12, 6.045e-12, 5.105e-12, 4.203e-12, | |||
| 5144 | 3.363e-12, 2.610e-12, 1.964e-12, 1.429e-12, 1.009e-12, | |||
| 5145 | 6.869e-13, 4.567e-13, 2.909e-13, 1.790e-13, 1.033e-13, | |||
| 5146 | 5.183e-14, 1.809e-14, 8.906e-15, 8.151e-15, 7.472e-15, | |||
| 5147 | 6.860e-15, 6.332e-15, 5.902e-15, 5.555e-15, 5.268e-15, | |||
| 5148 | 5.019e-15, 4.808e-15, 4.657e-15, 4.551e-15, 4.483e-15, | |||
| 5149 | 4.453e-15, 4.460e-15, 4.498e-15, 4.581e-15, 4.702e-15, | |||
| 5150 | 4.860e-15, 5.049e-15, 5.275e-15, 5.540e-15, 5.864e-15, | |||
| 5151 | 6.272e-15, 3.285e-14, 8.652e-14, 1.564e-13, 2.476e-13, | |||
| 5152 | 3.706e-13, 5.518e-13, 8.262e-13, 1.265e-12, 1.708e-12, | |||
| 5153 | 2.148e-12, 2.584e-12, 3.012e-12, 3.432e-12, 3.836e-12, | |||
| 5154 | 4.219e-12, 4.571e-12, 4.879e-12, 5.133e-12, 5.322e-12, | |||
| 5155 | 5.439e-12, 5.482e-12, 5.452e-12, 5.352e-12, 5.185e-12, | |||
| 5156 | 4.955e-12, 4.666e-12, 4.323e-12, 3.935e-12, 3.511e-12, | |||
| 5157 | 3.069e-12, 2.641e-12, 2.302e-12, 2.118e-12, 1.978e-12, | |||
| 5158 | 1.874e-12, 1.809e-12, 1.787e-12, 1.812e-12, 1.888e-12, | |||
| 5159 | 2.015e-12, 2.195e-12, 2.429e-12, 2.721e-12, 3.074e-12, | |||
| 5160 | 3.495e-12, 3.990e-12, 4.564e-12, 5.216e-12, 5.943e-12, | |||
| 5161 | 6.726e-12, 7.566e-12, 8.462e-12, 9.412e-12, 1.040e-11, | |||
| 5162 | 1.142e-11, 1.244e-11, 1.342e-11, 1.433e-11, 1.519e-11, | |||
| 5163 | 1.602e-11, 1.688e-11, 1.782e-11, 1.890e-11, 2.010e-11, | |||
| 5164 | 2.139e-11, 2.268e-11, 2.375e-11, 2.445e-11, 2.481e-11, | |||
| 5165 | 2.486e-11, 2.464e-11, 2.417e-11, 2.349e-11, 2.262e-11, | |||
| 5166 | 2.157e-11, 2.038e-11, 1.908e-11, 1.770e-11, 1.626e-11, | |||
| 5167 | 1.477e-11, 1.323e-11, 1.165e-11, 9.999e-12, 8.290e-12, | |||
| 5168 | 6.576e-12, 4.935e-12, 3.475e-12, 2.280e-12, 1.419e-12, | |||
| 5169 | 9.163e-13, 7.470e-13, 7.556e-13, 7.834e-13, 8.307e-13, | |||
| 5170 | 8.969e-13, 9.822e-13, 1.088e-12, 1.215e-12, 1.367e-12, | |||
| 5171 | 1.546e-12, 1.755e-12, 1.999e-12, 2.283e-12, 2.614e-12, | |||
| 5172 | 2.998e-12, 3.446e-12, 3.968e-12, 4.576e-12, 5.280e-12, | |||
| 5173 | 6.095e-12, 7.031e-12, 8.103e-12, 9.320e-12, 1.070e-11, | |||
| 5174 | 1.225e-11, 1.400e-11, 1.600e-11, 1.825e-11, 2.082e-11, | |||
| 5175 | 2.377e-11, 2.719e-11, 3.115e-11, 3.576e-11, 4.110e-11, | |||
| 5176 | 4.725e-11, 5.425e-11, 6.219e-11, 7.118e-11, 8.133e-11, | |||
| 5177 | 9.264e-11, 1.052e-10, 1.190e-10, 1.341e-10, 1.506e-10, | |||
| 5178 | 1.684e-10, 1.879e-10, 2.094e-10, 2.339e-10, 2.624e-10, | |||
| 5179 | 2.956e-10, 3.345e-10, 3.795e-10, 4.309e-10, 4.883e-10, | |||
| 5180 | 5.499e-10, 6.166e-10, 6.887e-10, 7.664e-10, 8.495e-10, | |||
| 5181 | 9.372e-10, 1.028e-09, 1.119e-09, 1.209e-09, 1.293e-09, | |||
| 5182 | 1.372e-09, 1.448e-09, 1.526e-09, 1.612e-09, 1.711e-09, | |||
| 5183 | 1.822e-09, 1.944e-09, 2.070e-09, 2.175e-09, 2.246e-09, | |||
| 5184 | 2.287e-09, 2.298e-09, 2.285e-09, 2.248e-09, 2.190e-09, | |||
| 5185 | 2.111e-09, 2.016e-09, 1.906e-09, 1.785e-09, 1.657e-09, | |||
| 5186 | 1.521e-09, 1.382e-09, 1.238e-09, 1.089e-09, 9.341e-10, | |||
| 5187 | 7.733e-10, 6.100e-10, 4.528e-10, 3.101e-10, 1.906e-10, | |||
| 5188 | 1.028e-10, 4.896e-11, 2.904e-11, 2.392e-11, 1.984e-11, | |||
| 5189 | 1.661e-11, 1.403e-11, 1.193e-11, 1.023e-11, 8.815e-12, | |||
| 5190 | 7.641e-12, 6.658e-12, 5.828e-12, 5.123e-12, 4.521e-12, | |||
| 5191 | 4.004e-12, 3.558e-12, 3.171e-12, 2.834e-12, 2.539e-12, | |||
| 5192 | 2.280e-12, 2.052e-12, 1.850e-12, 1.671e-12, 1.512e-12, | |||
| 5193 | 1.370e-12, 1.243e-12, 1.129e-12, 1.026e-12, 9.339e-13, | |||
| 5194 | 8.504e-13, 7.748e-13, 7.063e-13, 6.440e-13, 5.872e-13, | |||
| 5195 | 5.354e-13, 4.881e-13, 4.448e-13, 4.051e-13, 3.686e-13, | |||
| 5196 | 3.351e-13, 3.042e-13, 2.757e-13, 2.494e-13, 2.252e-13, | |||
| 5197 | 2.027e-13, 1.818e-13, 1.625e-13, 1.446e-13, 1.280e-13, | |||
| 5198 | 1.125e-13, 9.815e-14, 8.481e-14, 7.242e-14, 6.095e-14, | |||
| 5199 | 5.034e-14, 4.060e-14, 3.174e-14, 2.390e-14, 1.717e-14, | |||
| 5200 | 1.206e-14, 1.034e-14, 9.811e-15, 9.358e-15, 8.906e-15, | |||
| 5201 | 8.453e-15, 8.075e-15, 7.698e-15, 7.328e-15, 6.989e-15, | |||
| 5202 | 6.664e-15, 6.355e-15, 6.068e-15, 5.796e-15, 5.540e-15, | |||
| 5203 | 5.298e-15, 5.064e-15, 4.845e-15, 4.642e-15, 4.445e-15, | |||
| 5204 | 4.257e-15, 4.075e-15, 3.909e-15, 3.743e-15, 3.592e-15, | |||
| 5205 | 3.449e-15, 3.306e-15, 3.177e-15, 3.057e-15, 2.936e-15, | |||
| 5206 | 2.823e-15, 2.709e-15, 2.611e-15, 2.513e-15, 2.415e-15, | |||
| 5207 | 2.325e-15, 2.242e-15, 2.158e-15, 2.083e-15, 2.008e-15, | |||
| 5208 | 1.940e-15, 1.872e-15, 1.804e-15, 1.743e-15, 1.691e-15, | |||
| 5209 | 1.638e-15, 1.585e-15, 1.540e-15, 1.494e-15, 1.457e-15, | |||
| 5210 | 1.419e-15, 1.389e-15, 1.358e-15, 1.343e-15, 1.321e-15, | |||
| 5211 | 1.298e-15, 1.283e-15, 1.268e-15, 1.253e-15, 1.245e-15, | |||
| 5212 | 5.862e-15, 3.288e-14, 6.265e-14, 9.326e-14, 1.234e-13, | |||
| 5213 | 1.522e-13, 1.796e-13, 2.058e-13, 2.317e-13, 2.575e-13, | |||
| 5214 | 2.833e-13, 3.087e-13, 3.328e-13, 3.550e-13, 3.742e-13, | |||
| 5215 | 3.895e-13, 4.003e-13, 4.058e-13, 4.058e-13, 4.003e-13, | |||
| 5216 | 3.895e-13, 3.742e-13, 3.548e-13, 3.324e-13, 3.077e-13, | |||
| 5217 | 2.818e-13, 2.549e-13, 2.274e-13, 1.990e-13, 1.691e-13, | |||
| 5218 | 1.374e-13, 1.040e-13, 6.996e-14, 3.648e-14, 5.560e-15, | |||
| 5219 | 6.709e-16, 6.468e-16, 6.196e-16, 5.917e-16, 5.645e-16, | |||
| 5220 | 5.396e-16, 5.162e-16, 4.928e-16, 4.717e-16, 4.528e-16, | |||
| 5221 | 4.385e-16, 4.279e-16, 4.211e-16, 4.181e-16, 4.166e-16, | |||
| 5222 | 4.166e-16, 4.189e-16, 4.226e-16, 4.279e-16, 4.370e-16, | |||
| 5223 | 4.475e-16, 4.611e-16, 4.755e-16, 4.936e-16, 5.155e-16, | |||
| 5224 | 5.426e-16, 5.736e-16, 6.060e-16, 6.453e-16, 6.928e-16, | |||
| 5225 | 2.296e-14, 5.327e-14, 8.601e-14, 1.202e-13, 1.548e-13, | |||
| 5226 | 1.892e-13, 2.235e-13, 2.581e-13, 2.945e-13, 3.339e-13, | |||
| 5227 | 3.774e-13, 4.261e-13, 4.803e-13, 5.411e-13, 6.089e-13, | |||
| 5228 | 6.851e-13, 7.711e-13, 8.691e-13, 9.818e-13, 1.112e-12, | |||
| 5229 | 1.263e-12, 1.436e-12, 1.634e-12, 1.856e-12, 2.099e-12, | |||
| 5230 | 2.358e-12, 2.625e-12, 2.889e-12, 3.139e-12, 3.373e-12, | |||
| 5231 | 3.595e-12, 3.811e-12, 4.032e-12, 4.260e-12, 4.497e-12, | |||
| 5232 | 4.736e-12, 4.970e-12, 5.185e-12, 5.369e-12, 5.511e-12, | |||
| 5233 | 5.600e-12, 5.630e-12, 5.600e-12, 5.512e-12, 5.369e-12, | |||
| 5234 | 5.181e-12, 4.955e-12, 4.699e-12, 4.424e-12, 4.134e-12, | |||
| 5235 | 3.833e-12, 3.520e-12, 3.193e-12, 2.847e-12, 2.481e-12, | |||
| 5236 | 2.103e-12, 1.730e-12, 1.375e-12, 1.053e-12, 7.751e-13, | |||
| 5237 | 5.442e-13, 3.613e-13, 2.236e-13, 1.239e-13, 5.619e-14, | |||
| 5238 | 1.470e-14, 4.747e-15, 4.483e-15, 4.279e-15, 4.158e-15, | |||
| 5239 | 4.136e-15, 4.204e-15, 4.355e-15, 1.840e-14, 4.496e-14, | |||
| 5240 | 8.112e-14, 1.284e-13, 1.892e-13, 2.667e-13, 3.638e-13, | |||
| 5241 | 4.862e-13, 6.386e-13, 8.266e-13, 1.056e-12, 1.334e-12, | |||
| 5242 | 1.665e-12, 2.055e-12, 2.506e-12, 3.021e-12, 3.595e-12, | |||
| 5243 | 4.225e-12, 4.900e-12, 5.605e-12, 6.318e-12, 7.018e-12, | |||
| 5244 | 7.688e-12, 8.326e-12, 8.949e-12, 9.578e-12, 1.023e-11, | |||
| 5245 | 1.089e-11, 1.157e-11, 1.224e-11, 1.286e-11, 1.339e-11, | |||
| 5246 | 1.380e-11, 1.407e-11, 1.418e-11, 1.412e-11, 1.390e-11, | |||
| 5247 | 1.354e-11, 1.306e-11, 1.247e-11, 1.181e-11, 1.108e-11, | |||
| 5248 | 1.032e-11, 9.520e-12, 8.700e-12, 7.857e-12, 6.985e-12, | |||
| 5249 | 6.077e-12, 5.144e-12, 4.213e-12, 3.324e-12, 2.518e-12, | |||
| 5250 | 1.820e-12, 1.251e-12, 8.129e-13, 4.967e-13, 2.819e-13, | |||
| 5251 | 1.460e-13, 6.531e-14, 1.977e-14, 6.506e-15, 5.547e-15, | |||
| 5252 | 4.740e-15, 4.113e-15, 3.645e-15, 3.291e-15, 3.004e-15, | |||
| 5253 | 2.755e-15, 2.536e-15, 2.392e-15, 2.302e-15, 2.249e-15, | |||
| 5254 | 2.219e-15, 2.226e-15, 2.264e-15, 2.340e-15, 2.445e-15, | |||
| 5255 | 2.581e-15, 8.149e-15, 4.005e-14, 8.285e-14, 1.376e-13, | |||
| 5256 | 2.056e-13, 2.892e-13, 3.902e-13, 5.099e-13, 6.488e-13, | |||
| 5257 | 8.062e-13, 9.798e-13, 1.166e-12, 1.358e-12, 1.551e-12, | |||
| 5258 | 1.737e-12, 1.915e-12, 2.088e-12, 2.261e-12, 2.440e-12, | |||
| 5259 | 2.626e-12, 2.818e-12, 3.010e-12, 3.195e-12, 3.365e-12, | |||
| 5260 | 3.508e-12, 3.618e-12, 3.689e-12, 3.718e-12, 3.705e-12, | |||
| 5261 | 3.652e-12, 3.564e-12, 3.447e-12, 3.305e-12, 3.146e-12, | |||
| 5262 | 2.973e-12, 2.790e-12, 2.600e-12, 2.400e-12, 2.189e-12, | |||
| 5263 | 1.963e-12, 1.722e-12, 1.473e-12, 1.226e-12, 9.909e-13, | |||
| 5264 | 7.778e-13, 5.938e-13, 4.407e-13, 3.182e-13, 2.235e-13, | |||
| 5265 | 1.522e-13, 9.812e-14, 5.676e-14, 2.415e-14, 1.683e-15, | |||
| 5266 | 1.434e-15, 1.238e-15, 1.079e-15, 9.434e-16, 8.302e-16, | |||
| 5267 | 7.306e-16, 6.400e-16, 5.691e-16, 5.117e-16, 4.626e-16, | |||
| 5268 | 4.166e-16, 3.743e-16, 3.411e-16, 3.132e-16, 2.891e-16, | |||
| 5269 | 2.664e-16, 2.453e-16, 2.279e-16, 2.136e-16, 2.008e-16, | |||
| 5270 | 1.887e-16, 1.781e-16, 1.698e-16, 1.623e-16, 1.562e-16, | |||
| 5271 | 1.509e-16, 1.472e-16, 1.434e-16, 1.419e-16, 1.411e-16, | |||
| 5272 | 1.419e-16, 1.434e-16, 1.457e-16, 1.502e-16, 1.570e-16, | |||
| 5273 | 1.668e-16, 1.811e-16, 1.985e-16, 2.181e-16, 2.415e-16, | |||
| 5274 | 2.664e-16, 2.966e-16, 3.313e-16, 3.675e-16, 4.030e-16, | |||
| 5275 | 4.347e-16, 4.619e-16, 4.875e-16, 5.117e-16, 5.336e-16, | |||
| 5276 | 5.540e-16, 5.706e-16, 5.849e-16, 5.977e-16, 6.113e-16, | |||
| 5277 | 1.061e-14, 2.170e-14, 3.323e-14, 4.525e-14, 5.762e-14, | |||
| 5278 | 7.011e-14, 8.221e-14, 9.352e-14, 1.034e-13, 1.115e-13, | |||
| 5279 | 1.176e-13, 1.216e-13, 1.234e-13, 1.229e-13, 1.206e-13, | |||
| 5280 | 1.170e-13, 1.127e-13, 1.081e-13, 1.038e-13, 1.002e-13, | |||
| 5281 | 9.738e-14, 9.552e-14, 9.443e-14, 9.389e-14, 9.366e-14, | |||
| 5282 | 9.377e-14, 9.433e-14, 9.567e-14, 9.768e-14, 1.005e-13, | |||
| 5283 | 1.046e-13, 1.106e-13, 1.191e-13, 1.304e-13, 1.446e-13, | |||
| 5284 | 1.611e-13, 1.789e-13, 1.960e-13, 2.106e-13, 2.203e-13, | |||
| 5285 | 2.255e-13, 2.263e-13, 2.231e-13, 2.165e-13, 2.068e-13, | |||
| 5286 | 1.945e-13, 1.800e-13, 1.637e-13, 1.462e-13, 1.278e-13, | |||
| 5287 | 1.088e-13, 8.916e-14, 6.893e-14, 4.796e-14, 2.634e-14, | |||
| 5288 | 4.974e-15, 8.151e-16, 8.302e-16, 8.453e-16, 8.679e-16, | |||
| 5289 | 8.906e-16, 9.132e-16, 9.358e-16, 9.660e-16, 1.004e-15, | |||
| 5290 | 1.057e-15, 1.125e-15, 1.200e-15, 1.291e-15, 1.389e-15, | |||
| 5291 | 6.595e-15, 2.605e-14, 4.954e-14, 7.688e-14, 1.083e-13, | |||
| 5292 | 1.441e-13, 1.841e-13, 2.286e-13, 2.772e-13, 3.294e-13, | |||
| 5293 | 3.845e-13, 4.415e-13, 4.993e-13, 5.575e-13, 6.175e-13, | |||
| 5294 | 6.813e-13, 7.524e-13, 8.335e-13, 9.256e-13, 1.029e-12, | |||
| 5295 | 1.141e-12, 1.253e-12, 1.358e-12, 1.460e-12, 1.561e-12, | |||
| 5296 | 1.663e-12, 1.770e-12, 1.884e-12, 2.005e-12, 2.136e-12, | |||
| 5297 | 2.276e-12, 2.426e-12, 2.585e-12, 2.750e-12, 2.918e-12, | |||
| 5298 | 3.082e-12, 3.243e-12, 3.398e-12, 3.558e-12, 3.735e-12, | |||
| 5299 | 3.947e-12, 4.208e-12, 4.525e-12, 4.897e-12, 5.316e-12, | |||
| 5300 | 5.752e-12, 6.174e-12, 6.589e-12, 7.013e-12, 7.462e-12, | |||
| 5301 | 7.957e-12, 8.518e-12, 9.167e-12, 9.929e-12, 1.082e-11, | |||
| 5302 | 1.187e-11, 1.309e-11, 1.449e-11, 1.607e-11, 1.782e-11, | |||
| 5303 | 1.972e-11, 2.172e-11, 2.376e-11, 2.578e-11, 2.771e-11, | |||
| 5304 | 2.956e-11, 3.140e-11, 3.336e-11, 3.556e-11, 3.809e-11, | |||
| 5305 | 4.093e-11, 4.398e-11, 4.703e-11, 4.986e-11, 5.188e-11, | |||
| 5306 | 5.313e-11, 5.366e-11, 5.352e-11, 5.277e-11, 5.147e-11, | |||
| 5307 | 4.970e-11, 4.753e-11, 4.503e-11, 4.228e-11, 3.936e-11, | |||
| 5308 | 3.631e-11, 3.316e-11, 2.993e-11, 2.661e-11, 2.317e-11, | |||
| 5309 | 1.961e-11, 1.604e-11, 1.264e-11, 9.610e-12, 7.158e-12, | |||
| 5310 | 5.460e-12, 4.584e-12, 4.502e-12, 5.024e-12, 5.734e-12, | |||
| 5311 | 6.605e-12, 7.649e-12, 8.877e-12, 1.031e-11, 1.195e-11, | |||
| 5312 | 1.382e-11, 1.593e-11, 1.828e-11, 2.090e-11, 2.377e-11, | |||
| 5313 | 2.691e-11, 3.027e-11, 3.380e-11, 3.740e-11, 4.095e-11, | |||
| 5314 | 4.430e-11, 4.743e-11, 5.043e-11, 5.352e-11, 5.687e-11, | |||
| 5315 | 6.059e-11, 6.473e-11, 6.903e-11, 7.342e-11, 7.661e-11, | |||
| 5316 | 7.866e-11, 7.963e-11, 7.959e-11, 7.862e-11, 7.683e-11, | |||
| 5317 | 7.428e-11, 7.108e-11, 6.733e-11, 6.313e-11, 5.862e-11, | |||
| 5318 | 5.389e-11, 4.904e-11, 4.412e-11, 3.915e-11, 3.410e-11, | |||
| 5319 | 2.889e-11, 2.350e-11, 1.814e-11, 1.303e-11, 8.549e-12, | |||
| 5320 | 4.950e-12, 2.450e-12, 1.118e-12, 8.048e-13, 6.484e-13, | |||
| 5321 | 5.257e-13, 4.281e-13, 3.496e-13, 2.858e-13, 2.334e-13, | |||
| 5322 | 1.900e-13, 1.538e-13, 1.235e-13, 9.783e-14, 7.609e-14, | |||
| 5323 | 5.762e-14, 4.193e-14, 2.872e-14, 1.785e-14, 9.478e-15, | |||
| 5324 | 6.702e-15, 6.045e-15, 5.502e-15, 5.034e-15, 4.611e-15, | |||
| 5325 | 4.219e-15, 3.857e-15, 3.547e-15, 3.268e-15, 3.019e-15, | |||
| 5326 | 2.792e-15, 2.574e-15, 2.385e-15, 2.219e-15, 2.060e-15, | |||
| 5327 | 1.917e-15, 1.781e-15, 1.660e-15, 1.555e-15, 1.457e-15, | |||
| 5328 | 1.358e-15, 1.268e-15, 1.192e-15, 1.117e-15, 1.049e-15, | |||
| 5329 | 9.887e-16, 9.283e-16, 8.755e-16, 8.226e-16, 7.774e-16, | |||
| 5330 | 7.343e-16, 6.928e-16, 6.551e-16, 6.204e-16, 5.872e-16, | |||
| 5331 | 5.562e-16, 5.268e-16, 4.996e-16, 4.740e-16, 4.506e-16, | |||
| 5332 | 4.279e-16, 4.060e-16, 3.864e-16, 3.675e-16, 3.502e-16, | |||
| 5333 | 3.336e-16, 3.177e-16, 3.026e-16, 2.891e-16, 2.762e-16, | |||
| 5334 | 2.634e-16, 2.513e-16, 2.400e-16, 2.302e-16, 2.196e-16, | |||
| 5335 | 2.106e-16, 2.015e-16, 1.925e-16, 1.849e-16, 1.766e-16, | |||
| 5336 | 1.698e-16, 1.623e-16, 1.562e-16, 1.494e-16, 1.434e-16, | |||
| 5337 | 1.381e-16, 1.321e-16, 1.275e-16, 1.223e-16, 1.177e-16, | |||
| 5338 | 1.132e-16, 1.087e-16, 1.049e-16, 1.004e-16, 9.660e-17, | |||
| 5339 | 9.358e-17, 8.981e-17, 8.679e-17, 8.377e-17, 8.075e-17, | |||
| 5340 | 7.774e-17, 7.479e-17, 7.215e-17, 6.966e-17, 6.725e-17, | |||
| 5341 | 6.491e-17, 6.264e-17, 6.053e-17, 5.849e-17, 5.653e-17, | |||
| 5342 | 5.457e-17, 5.275e-17, 5.102e-17, 4.936e-17, 4.777e-17, | |||
| 5343 | 4.619e-17, 4.468e-17, 4.325e-17, 4.189e-17, 4.053e-17, | |||
| 5344 | 3.925e-17, 3.804e-17, 3.683e-17, 3.570e-17, 3.457e-17, | |||
| 5345 | 3.351e-17, 3.245e-17, 3.147e-17, 3.057e-17, 2.958e-17, | |||
| 5346 | 2.875e-17, 2.785e-17, 2.702e-17, 2.626e-17, 2.551e-17, | |||
| 5347 | 2.475e-17, 2.400e-17, 2.332e-17, 2.264e-17, 2.196e-17, | |||
| 5348 | 2.136e-17, 2.075e-17, 2.015e-17, 1.962e-17, 1.902e-17, | |||
| 5349 | 1.849e-17, 1.804e-17, 1.751e-17, 1.706e-17, 1.660e-17, | |||
| 5350 | 1.615e-17, 1.570e-17, 1.525e-17, 1.487e-17, 1.442e-17, | |||
| 5351 | 1.404e-17, 1.366e-17, 1.336e-17, 1.298e-17, 1.260e-17, | |||
| 5352 | 1.230e-17, 1.200e-17, 1.170e-17, 1.140e-17, 1.109e-17, | |||
| 5353 | 1.079e-17, 1.057e-17, 1.026e-17, 1.004e-17, 9.736e-18, | |||
| 5354 | 9.509e-18, 9.283e-18, 9.057e-18, 8.830e-18, 8.604e-18, | |||
| 5355 | 8.377e-18, 8.226e-18, 8.000e-18, 7.774e-18, 7.623e-18, | |||
| 5356 | 7.419e-18, 7.245e-18, 7.072e-18, 6.906e-18, 6.740e-18, | |||
| 5357 | 6.581e-18, 6.423e-18, 6.279e-18, 6.128e-18, 5.985e-18, | |||
| 5358 | 5.849e-18, 5.713e-18, 5.585e-18, 5.457e-18, 5.328e-18, | |||
| 5359 | 5.208e-18, 5.087e-18, 4.974e-18, 4.860e-18, 4.755e-18, | |||
| 5360 | 4.649e-18, 4.543e-18, 4.445e-18, 4.347e-18, 4.249e-18, | |||
| 5361 | 4.158e-18, 4.068e-18, 3.977e-18, 3.887e-18, 3.804e-18, | |||
| 5362 | 3.721e-18, 3.645e-18, 3.562e-18, 3.487e-18, 3.411e-18, | |||
| 5363 | 3.343e-18, 3.268e-18, 3.200e-18, 3.132e-18, 3.072e-18, | |||
| 5364 | 3.004e-18, 2.943e-18, 2.883e-18, 2.823e-18, 2.762e-18, | |||
| 5365 | 2.709e-18, 2.649e-18, 2.596e-18, 2.543e-18, 2.491e-18, | |||
| 5366 | 2.445e-18, 2.392e-18, 2.347e-18, 2.302e-18, 2.257e-18, | |||
| 5367 | 2.211e-18, 2.166e-18, 2.121e-18, 2.083e-18, 2.038e-18, | |||
| 5368 | 2.000e-18, 1.962e-18, 1.925e-18, 1.887e-18, 1.849e-18, | |||
| 5369 | 1.811e-18, 1.781e-18, 1.743e-18, 1.713e-18, 1.683e-18, | |||
| 5370 | 1.645e-18, 1.615e-18, 1.585e-18, 1.555e-18, 1.525e-18, | |||
| 5371 | 1.502e-18, 1.472e-18, 1.442e-18, 1.419e-18, 1.389e-18, | |||
| 5372 | 1.366e-18, 1.343e-18, 1.321e-18, 1.291e-18, 1.268e-18, | |||
| 5373 | 1.245e-18, 1.223e-18, 1.208e-18, 1.185e-18, 1.162e-18, | |||
| 5374 | 1.140e-18, 1.125e-18, 1.102e-18, 1.087e-18, 1.064e-18, | |||
| 5375 | 1.049e-18, 1.026e-18, 1.011e-18, 9.962e-19, 9.811e-19, | |||
| 5376 | 9.585e-19, 9.434e-19, 9.283e-19, 9.132e-19, 8.981e-19, | |||
| 5377 | 8.830e-19, 8.679e-19, 8.604e-19, 8.453e-19, 8.302e-19, | |||
| 5378 | 8.151e-19, 8.075e-19, 7.925e-19, 7.774e-19, 7.698e-19, | |||
| 5379 | 7.547e-19, 7.442e-19, 7.328e-19, 7.215e-19, 7.109e-19, | |||
| 5380 | 7.011e-19, 6.906e-19, 6.808e-19, 6.709e-19, 6.611e-19, | |||
| 5381 | 6.521e-19, 6.430e-19, 6.340e-19, 6.257e-19, 6.174e-19, | |||
| 5382 | 6.091e-19, 6.008e-19, 5.932e-19, 5.857e-19, 5.781e-19, | |||
| 5383 | 5.706e-19, 5.638e-19, 5.570e-19, 5.502e-19, 5.442e-19, | |||
| 5384 | 5.374e-19, 5.313e-19, 5.253e-19, 5.200e-19, 5.140e-19, | |||
| 5385 | 5.087e-19, 5.034e-19, 4.981e-19, 4.936e-19, 4.891e-19, | |||
| 5386 | 4.845e-19, 4.800e-19, 4.755e-19, 4.717e-19, 4.679e-19, | |||
| 5387 | 4.642e-19, 4.604e-19, 4.566e-19, 4.536e-19, 4.506e-19, | |||
| 5388 | 4.475e-19, 4.445e-19, 4.423e-19, 4.400e-19, 4.370e-19, | |||
| 5389 | 4.355e-19, 4.332e-19, 4.317e-19, 4.294e-19, 4.287e-19, | |||
| 5390 | 4.272e-19, 4.257e-19, 4.249e-19, 4.242e-19, 4.234e-19, | |||
| 5391 | 4.234e-19, 4.226e-19, 4.226e-19, 4.226e-19, 4.234e-19, | |||
| 5392 | 4.234e-19, 4.242e-19, 4.249e-19, 4.264e-19, 4.272e-19, | |||
| 5393 | 4.287e-19, 4.302e-19, 4.325e-19, 4.347e-19, 4.370e-19, | |||
| 5394 | 4.392e-19, 4.423e-19, 4.453e-19, 4.483e-19, 4.521e-19, | |||
| 5395 | 4.558e-19, 4.596e-19, 4.642e-19, 4.687e-19, 4.732e-19, | |||
| 5396 | 4.785e-19, 4.838e-19, 4.898e-19, 4.958e-19, 5.026e-19, | |||
| 5397 | 5.094e-19, 5.162e-19, 5.238e-19, 5.313e-19, 5.396e-19, | |||
| 5398 | 5.487e-19, 5.577e-19, 5.668e-19, 5.774e-19, 5.872e-19, | |||
| 5399 | 5.985e-19, 6.098e-19, 6.219e-19, 6.347e-19, 6.475e-19, | |||
| 5400 | 6.611e-19, 6.755e-19, 6.906e-19, 7.064e-19, 7.223e-19, | |||
| 5401 | 7.396e-19, 7.547e-19, 7.774e-19, 7.925e-19, 8.151e-19, | |||
| 5402 | 8.377e-19, 8.604e-19, 8.830e-19, 9.057e-19, 9.283e-19, | |||
| 5403 | 9.585e-19, 9.887e-19, 1.011e-18, 1.042e-18, 1.072e-18, | |||
| 5404 | 1.109e-18, 1.140e-18, 1.177e-18, 1.215e-18, 1.253e-18, | |||
| 5405 | 1.298e-18, 1.343e-18, 1.389e-18, 1.434e-18, 1.479e-18, | |||
| 5406 | 1.532e-18, 1.592e-18, 1.645e-18, 1.706e-18, 1.774e-18, | |||
| 5407 | 1.842e-18, 1.909e-18, 1.985e-18, 2.060e-18, 2.143e-18, | |||
| 5408 | 2.226e-18, 2.325e-18, 2.423e-18, 2.521e-18, 2.634e-18, | |||
| 5409 | 2.747e-18, 2.868e-18, 3.004e-18, 3.132e-18, 3.283e-18, | |||
| 5410 | 3.434e-18, 3.600e-18, 3.774e-18, 3.955e-18, 4.151e-18, | |||
| 5411 | 4.362e-18, 4.589e-18, 4.823e-18, 5.072e-18, 5.343e-18, | |||
| 5412 | 5.638e-18, 5.947e-18, 6.279e-18, 6.634e-18, 7.011e-18, | |||
| 5413 | 7.434e-18, 7.925e-18, 8.377e-18, 8.906e-18, 9.434e-18, | |||
| 5414 | 1.004e-17, 1.072e-17, 1.147e-17, 1.223e-17, 1.306e-17, | |||
| 5415 | 1.404e-17, 1.509e-17, 1.615e-17, 1.736e-17, 1.872e-17, | |||
| 5416 | 2.030e-17, 2.204e-17, 2.377e-17, 2.581e-17, 2.815e-17, | |||
| 5417 | 3.094e-17, 3.389e-17, 3.706e-17, 4.068e-17, 4.498e-17, | |||
| 5418 | 5.042e-17, 5.638e-17, 6.279e-17, 7.019e-17, 7.925e-17, | |||
| 5419 | 9.132e-17, 1.049e-16, 1.208e-16, 1.389e-16, 1.592e-16, | |||
| 5420 | 1.811e-16, 2.060e-16, 2.340e-16, 2.634e-16, 2.943e-16, | |||
| 5421 | 3.260e-16, 3.600e-16, 3.955e-16, 4.309e-16, 1.103e-14, | |||
| 5422 | 2.506e-14, 4.104e-14, 5.874e-14, 7.793e-14, 9.821e-14, | |||
| 5423 | 1.190e-13, 1.397e-13, 1.596e-13, 1.784e-13, 1.965e-13, | |||
| 5424 | 2.147e-13, 2.340e-13, 2.551e-13, 2.783e-13, 3.032e-13, | |||
| 5425 | 3.282e-13, 3.517e-13, 3.712e-13, 3.839e-13, 3.902e-13, | |||
| 5426 | 3.907e-13, 3.857e-13, 3.758e-13, 3.617e-13, 3.440e-13, | |||
| 5427 | 3.234e-13, 3.005e-13, 2.758e-13, 2.500e-13, 2.232e-13, | |||
| 5428 | 1.957e-13, 1.672e-13, 1.376e-13, 1.068e-13, 7.534e-14, | |||
| 5429 | 4.448e-14, 1.646e-14, 7.117e-16, 6.853e-16, 6.611e-16, | |||
| 5430 | 6.423e-16, 6.242e-16, 6.060e-16, 5.925e-16, 5.887e-16, | |||
| 5431 | 6.008e-16, 6.279e-16, 6.679e-16, 7.192e-16, 7.849e-16, | |||
| 5432 | 8.604e-16, 9.434e-16, 1.237e-14, 2.704e-14, 4.486e-14, | |||
| 5433 | 6.621e-14, 9.162e-14, 1.215e-13, 1.567e-13, 1.979e-13, | |||
| 5434 | 2.458e-13, 3.012e-13, 3.647e-13, 4.369e-13, 5.184e-13, | |||
| 5435 | 6.090e-13, 7.084e-13, 8.155e-13, 9.281e-13, 1.044e-12, | |||
| 5436 | 1.160e-12, 1.272e-12, 1.377e-12, 1.480e-12, 1.584e-12, | |||
| 5437 | 1.698e-12, 1.828e-12, 1.975e-12, 2.140e-12, 2.312e-12, | |||
| 5438 | 2.455e-12, 2.557e-12, 2.620e-12, 2.647e-12, 2.640e-12, | |||
| 5439 | 2.602e-12, 2.536e-12, 2.446e-12, 2.334e-12, 2.206e-12, | |||
| 5440 | 2.063e-12, 1.911e-12, 1.750e-12, 1.584e-12, 1.413e-12, | |||
| 5441 | 1.237e-12, 1.054e-12, 8.642e-13, 6.704e-13, 4.821e-13, | |||
| 5442 | 3.093e-13, 1.651e-13, 5.853e-14, 2.657e-15, 2.340e-15, | |||
| 5443 | 2.068e-15, 1.849e-15, 1.645e-15, 1.472e-15, 1.321e-15, | |||
| 5444 | 1.208e-15, 1.132e-15, 1.094e-15, 1.079e-15, 4.198e-15, | |||
| 5445 | 1.473e-14, 2.792e-14, 4.378e-14, 6.256e-14, 8.443e-14, | |||
| 5446 | 1.096e-13, 1.382e-13, 1.702e-13, 2.055e-13, 2.437e-13, | |||
| 5447 | 2.843e-13, 3.262e-13, 3.682e-13, 4.090e-13, 4.477e-13, | |||
| 5448 | 4.847e-13, 5.220e-13, 5.617e-13, 6.059e-13, 6.555e-13, | |||
| 5449 | 7.100e-13, 7.681e-13, 8.206e-13, 8.615e-13, 8.884e-13, | |||
| 5450 | 9.020e-13, 9.031e-13, 8.928e-13, 8.720e-13, 8.425e-13, | |||
| 5451 | 8.051e-13, 7.613e-13, 7.123e-13, 6.594e-13, 6.037e-13, | |||
| 5452 | 5.458e-13, 4.862e-13, 4.248e-13, 3.610e-13, 2.945e-13, | |||
| 5453 | 2.263e-13, 1.588e-13, 9.623e-14, 4.206e-14, 1.162e-15, | |||
| 5454 | 1.064e-15, 9.509e-16, 8.226e-16, 6.913e-16, 5.683e-16, | |||
| 5455 | 4.687e-16, 3.955e-16, 3.404e-16, 2.974e-16, 2.619e-16, | |||
| 5456 | 2.287e-16, 1.985e-16, 1.758e-16, 1.570e-16, 1.419e-16, | |||
| 5457 | 1.268e-16, 1.132e-16, 1.019e-16, 9.283e-17, 8.453e-17, | |||
| 5458 | 7.698e-17, 6.966e-17, 6.362e-17, 5.842e-17, 5.381e-17, | |||
| 5459 | 4.943e-17, 4.536e-17, 4.189e-17, 3.879e-17, 3.600e-17, | |||
| 5460 | 3.336e-17, 3.087e-17, 2.875e-17, 2.679e-17, 2.506e-17, | |||
| 5461 | 2.332e-17, 2.181e-17, 2.038e-17, 1.909e-17, 1.796e-17, | |||
| 5462 | 1.683e-17, 1.585e-17, 1.487e-17, 1.404e-17, 1.321e-17, | |||
| 5463 | 1.245e-17, 1.177e-17, 1.109e-17, 1.049e-17, 9.962e-18, | |||
| 5464 | 9.434e-18, 8.906e-18, 8.453e-18, 8.000e-18, 7.623e-18, | |||
| 5465 | 7.238e-18, 6.875e-18, 6.543e-18, 6.226e-18, 5.932e-18, | |||
| 5466 | 5.653e-18, 5.381e-18, 5.132e-18, 4.898e-18, 4.679e-18, | |||
| 5467 | 4.468e-18, 4.272e-18, 4.083e-18, 3.902e-18, 3.736e-18, | |||
| 5468 | 3.577e-18, 3.426e-18, 3.283e-18, 3.147e-18, 3.019e-18, | |||
| 5469 | 2.891e-18, 2.777e-18, 2.664e-18, 2.558e-18, 2.460e-18, | |||
| 5470 | 2.362e-18, 2.272e-18, 2.181e-18, 2.098e-18, 2.023e-18, | |||
| 5471 | 1.947e-18, 1.872e-18, 1.804e-18, 1.736e-18, 1.675e-18, | |||
| 5472 | 1.615e-18, 1.555e-18, 1.502e-18, 1.449e-18, 1.396e-18, | |||
| 5473 | 1.351e-18, 1.298e-18, 1.253e-18, 1.215e-18, 1.170e-18, | |||
| 5474 | 1.132e-18, 1.094e-18, 1.057e-18, 1.026e-18, 9.887e-19, | |||
| 5475 | 9.585e-19, 9.283e-19, 8.981e-19, 8.679e-19, 8.377e-19, | |||
| 5476 | 8.151e-19, 7.849e-19, 7.623e-19, 7.396e-19, 7.162e-19, | |||
| 5477 | 6.943e-19, 6.732e-19, 6.528e-19, 6.332e-19, 6.143e-19, | |||
| 5478 | 5.955e-19, 5.781e-19, 5.608e-19, 5.442e-19, 5.283e-19, | |||
| 5479 | 5.132e-19, 4.981e-19, 4.838e-19, 4.702e-19, 4.566e-19, | |||
| 5480 | 4.438e-19, 4.309e-19, 4.189e-19, 4.075e-19, 3.962e-19, | |||
| 5481 | 3.849e-19, 3.743e-19, 3.645e-19, 3.547e-19, 3.449e-19, | |||
| 5482 | 3.358e-19, 3.268e-19, 3.177e-19, 3.094e-19, 3.011e-19, | |||
| 5483 | 2.936e-19, 2.853e-19, 2.785e-19, 2.709e-19, 2.642e-19, | |||
| 5484 | 2.574e-19, 2.506e-19, 2.438e-19, 2.377e-19, 2.317e-19, | |||
| 5485 | 2.257e-19, 2.204e-19, 2.151e-19, 2.098e-19, 2.045e-19, | |||
| 5486 | 1.992e-19, 1.970e-19, 1.970e-19, 1.962e-19, 1.902e-19, | |||
| 5487 | 1.887e-19}; | |||
| 5488 | ||||
| 5489 | // CKD_MT 1.00 implementation of N2-N2 model of | |||
| 5490 | // Borysow, A, and L. Frommhold, | |||
| 5491 | // "Collision-induced rototranslational absorption spectra of N2-N2 | |||
| 5492 | // pairs for temperatures from 50 to 300 K", The | |||
| 5493 | // Astrophysical Journal, 311, 1043-1057, 1986. | |||
| 5494 | // absorption coefficient in units of [cm^-1 Amagat^-2] | |||
| 5495 | // these data are for T=296K | |||
| 5496 | const Numeric N2N2_CT296_ckd_mt_100_v1 = -10.0; | |||
| 5497 | const Numeric N2N2_CT296_ckd_mt_100_v2 = 350.0; | |||
| 5498 | const Numeric N2N2_CT296_ckd_mt_100_dv = 5.0; | |||
| 5499 | const int N2N2_CT296_ckd_mt_100_npt = 73; | |||
| 5500 | const double N2N2_CT296_ckd_mt_100[N2N2_CT296_ckd_mt_100_npt+addF77fields] = { | |||
| 5501 | 0.0000e0, | |||
| 5502 | 0.4303E-06, 0.4850E-06, 0.4979E-06, 0.4850E-06, 0.4303E-06, | |||
| 5503 | 0.3715E-06, 0.3292E-06, 0.3086E-06, 0.2920E-06, 0.2813E-06, | |||
| 5504 | 0.2804E-06, 0.2738E-06, 0.2726E-06, 0.2724E-06, 0.2635E-06, | |||
| 5505 | 0.2621E-06, 0.2547E-06, 0.2428E-06, 0.2371E-06, 0.2228E-06, | |||
| 5506 | 0.2100E-06, 0.1991E-06, 0.1822E-06, 0.1697E-06, 0.1555E-06, | |||
| 5507 | 0.1398E-06, 0.1281E-06, 0.1138E-06, 0.1012E-06, 0.9078E-07, | |||
| 5508 | 0.7879E-07, 0.6944E-07, 0.6084E-07, 0.5207E-07, 0.4540E-07, | |||
| 5509 | 0.3897E-07, 0.3313E-07, 0.2852E-07, 0.2413E-07, 0.2045E-07, | |||
| 5510 | 0.1737E-07, 0.1458E-07, 0.1231E-07, 0.1031E-07, 0.8586E-08, | |||
| 5511 | 0.7162E-08, 0.5963E-08, 0.4999E-08, 0.4226E-08, 0.3607E-08, | |||
| 5512 | 0.3090E-08, 0.2669E-08, 0.2325E-08, 0.2024E-08, 0.1783E-08, | |||
| 5513 | 0.1574E-08, 0.1387E-08, 0.1236E-08, 0.1098E-08, 0.9777E-09, | |||
| 5514 | 0.8765E-09, 0.7833E-09, 0.7022E-09, 0.6317E-09, 0.5650E-09, | |||
| 5515 | 0.5100E-09, 0.4572E-09, 0.4115E-09, 0.3721E-09, 0.3339E-09, | |||
| 5516 | 0.3005E-09, 0.2715E-09, 0.2428E-09}; | |||
| 5517 | ||||
| 5518 | const double N2N2_sf_296_ckd_mt_100[N2N2_CT296_ckd_mt_100_npt+addF77fields] = { | |||
| 5519 | 0.0e0, | |||
| 5520 | 1.3534, 1.3517, 1.3508, 1.3517, 1.3534, | |||
| 5521 | 1.3558, 1.3584, 1.3607, 1.3623, 1.3632, | |||
| 5522 | 1.3634, 1.3632, 1.3627, 1.3620, 1.3612, | |||
| 5523 | 1.3605, 1.3597, 1.3590, 1.3585, 1.3582, | |||
| 5524 | 1.3579, 1.3577, 1.3577, 1.3580, 1.3586, | |||
| 5525 | 1.3594, 1.3604, 1.3617, 1.3633, 1.3653, | |||
| 5526 | 1.3677, 1.3706, 1.3742, 1.3780, 1.3822, | |||
| 5527 | 1.3868, 1.3923, 1.3989, 1.4062, 1.4138, | |||
| 5528 | 1.4216, 1.4298, 1.4388, 1.4491, 1.4604, | |||
| 5529 | 1.4718, 1.4829, 1.4930, 1.5028, 1.5138, | |||
| 5530 | 1.5265, 1.5392, 1.5499, 1.5577, 1.5639, | |||
| 5531 | 1.5714, 1.5816, 1.5920, 1.6003, 1.6051, | |||
| 5532 | 1.6072, 1.6097, 1.6157, 1.6157, 1.6157, | |||
| 5533 | 1.6157, 1.6157, 1.6157, 1.6157, 1.6157, | |||
| 5534 | 1.6157, 1.6157, 1.6157}; | |||
| 5535 | ||||
| 5536 | // CKD_MT 1.00 implementation of N2-N2 model of | |||
| 5537 | // Borysow, A, and L. Frommhold, | |||
| 5538 | // "Collision-induced rototranslational absorption spectra of N2-N2 | |||
| 5539 | // pairs for temperatures from 50 to 300 K", The | |||
| 5540 | // Astrophysical Journal, 311, 1043-1057, 1986. | |||
| 5541 | // absorption coefficient in units of [cm^-1 Amagat^-2] | |||
| 5542 | // these data are for T=220K | |||
| 5543 | const Numeric N2N2_CT220_ckd_mt_100_v1 = -10.0; | |||
| 5544 | const Numeric N2N2_CT220_ckd_mt_100_v2 = 350.0; | |||
| 5545 | const Numeric N2N2_CT220_ckd_mt_100_dv = 5.0; | |||
| 5546 | const int N2N2_CT220_ckd_mt_100_npt = 73; | |||
| 5547 | const double N2N2_CT220_ckd_mt_100[N2N2_CT220_ckd_mt_100_npt+addF77fields] = { | |||
| 5548 | 0.0000e0, | |||
| 5549 | 0.4946E-06, 0.5756E-06, 0.5964E-06, 0.5756E-06, 0.4946E-06, | |||
| 5550 | 0.4145E-06, 0.3641E-06, 0.3482E-06, 0.3340E-06, 0.3252E-06, | |||
| 5551 | 0.3299E-06, 0.3206E-06, 0.3184E-06, 0.3167E-06, 0.2994E-06, | |||
| 5552 | 0.2943E-06, 0.2794E-06, 0.2582E-06, 0.2468E-06, 0.2237E-06, | |||
| 5553 | 0.2038E-06, 0.1873E-06, 0.1641E-06, 0.1474E-06, 0.1297E-06, | |||
| 5554 | 0.1114E-06, 0.9813E-07, 0.8309E-07, 0.7059E-07, 0.6068E-07, | |||
| 5555 | 0.5008E-07, 0.4221E-07, 0.3537E-07, 0.2885E-07, 0.2407E-07, | |||
| 5556 | 0.1977E-07, 0.1605E-07, 0.1313E-07, 0.1057E-07, 0.8482E-08, | |||
| 5557 | 0.6844E-08, 0.5595E-08, 0.4616E-08, 0.3854E-08, 0.3257E-08, | |||
| 5558 | 0.2757E-08, 0.2372E-08, 0.2039E-08, 0.1767E-08, 0.1548E-08, | |||
| 5559 | 0.1346E-08, 0.1181E-08, 0.1043E-08, 0.9110E-09, 0.8103E-09, | |||
| 5560 | 0.7189E-09, 0.6314E-09, 0.5635E-09, 0.4976E-09, 0.4401E-09, | |||
| 5561 | 0.3926E-09, 0.3477E-09, 0.3085E-09, 0.2745E-09, 0.2416E-09, | |||
| 5562 | 0.2155E-09, 0.1895E-09, 0.1678E-09, 0.1493E-09, 0.1310E-09, | |||
| 5563 | 0.1154E-09, 0.1019E-09, 0.8855E-10}; | |||
| 5564 | ||||
| 5565 | const double N2N2_sf_220_ckd_mt_100[N2N2_CT220_ckd_mt_100_npt+addF77fields] = { | |||
| 5566 | 0.0e0, | |||
| 5567 | 1.3536, 1.3515, 1.3502, 1.3515, 1.3536, | |||
| 5568 | 1.3565, 1.3592, 1.3612, 1.3623, 1.3626, | |||
| 5569 | 1.3623, 1.3616, 1.3609, 1.3600, 1.3591, | |||
| 5570 | 1.3583, 1.3576, 1.3571, 1.3571, 1.3572, | |||
| 5571 | 1.3574, 1.3578, 1.3585, 1.3597, 1.3616, | |||
| 5572 | 1.3640, 1.3666, 1.3698, 1.3734, 1.3776, | |||
| 5573 | 1.3828, 1.3894, 1.3969, 1.4049, 1.4127, | |||
| 5574 | 1.4204, 1.4302, 1.4427, 1.4562, 1.4687, | |||
| 5575 | 1.4798, 1.4894, 1.5000, 1.5142, 1.5299, | |||
| 5576 | 1.5441, 1.5555, 1.5615, 1.5645, 1.5730, | |||
| 5577 | 1.5880, 1.6028, 1.6121, 1.6133, 1.6094, | |||
| 5578 | 1.6117, 1.6244, 1.6389, 1.6485, 1.6513, | |||
| 5579 | 1.6468, 1.6438, 1.6523, 1.6523, 1.6523, | |||
| 5580 | 1.6523, 1.6523, 1.6523, 1.6523, 1.6523, | |||
| 5581 | 1.6523, 1.6523, 1.6523}; | |||
| 5582 | ||||
| 5583 | // CKD_MT 1.00 implementation of N2-N2 model of | |||
| 5584 | // Lafferty, W.J., A.M. Solodov,A. Weber, W.B. Olson and J._M. Hartmann, | |||
| 5585 | // Infrared collision-induced absorption by N2 near 4.3 microns for | |||
| 5586 | // atmospheric applications: measurements and emprirical modeling, | |||
| 5587 | // Appl. Optics, 35, 5911-5917, (1996). | |||
| 5588 | const Numeric N2N2_N2F_ckd_mt_100_v1 = 2085.000; | |||
| 5589 | const Numeric N2N2_N2F_ckd_mt_100_v2 = 2670.000; | |||
| 5590 | const Numeric N2N2_N2F_ckd_mt_100_dv = 5.000; | |||
| 5591 | const int N2N2_N2F_ckd_mt_100_npt = 118; | |||
| 5592 | const double N2N2_N2F_ckd_mt_100[N2N2_N2F_ckd_mt_100_npt+addF77fields] = { | |||
| 5593 | 0.000E+00, | |||
| 5594 | 0.000E+00, 2.000E-10, 5.200E-09, 1.020E-08, 1.520E-08, | |||
| 5595 | 2.020E-08, 2.520E-08, 3.020E-08, 4.450E-08, 5.220E-08, | |||
| 5596 | 6.460E-08, 7.750E-08, 9.030E-08, 1.060E-07, 1.210E-07, | |||
| 5597 | 1.370E-07, 1.570E-07, 1.750E-07, 2.010E-07, 2.300E-07, | |||
| 5598 | 2.590E-07, 2.950E-07, 3.260E-07, 3.660E-07, 4.050E-07, | |||
| 5599 | 4.470E-07, 4.920E-07, 5.340E-07, 5.840E-07, 6.240E-07, | |||
| 5600 | 6.670E-07, 7.140E-07, 7.260E-07, 7.540E-07, 7.840E-07, | |||
| 5601 | 8.090E-07, 8.420E-07, 8.620E-07, 8.870E-07, 9.110E-07, | |||
| 5602 | 9.360E-07, 9.760E-07, 1.030E-06, 1.110E-06, 1.230E-06, | |||
| 5603 | 1.390E-06, 1.610E-06, 1.760E-06, 1.940E-06, 1.970E-06, | |||
| 5604 | 1.870E-06, 1.750E-06, 1.560E-06, 1.420E-06, 1.350E-06, | |||
| 5605 | 1.320E-06, 1.290E-06, 1.290E-06, 1.290E-06, 1.300E-06, | |||
| 5606 | 1.320E-06, 1.330E-06, 1.340E-06, 1.350E-06, 1.330E-06, | |||
| 5607 | 1.310E-06, 1.290E-06, 1.240E-06, 1.200E-06, 1.160E-06, | |||
| 5608 | 1.100E-06, 1.040E-06, 9.960E-07, 9.380E-07, 8.630E-07, | |||
| 5609 | 7.980E-07, 7.260E-07, 6.550E-07, 5.940E-07, 5.350E-07, | |||
| 5610 | 4.740E-07, 4.240E-07, 3.770E-07, 3.330E-07, 2.960E-07, | |||
| 5611 | 2.630E-07, 2.340E-07, 2.080E-07, 1.850E-07, 1.670E-07, | |||
| 5612 | 1.470E-07, 1.320E-07, 1.200E-07, 1.090E-07, 9.850E-08, | |||
| 5613 | 9.080E-08, 8.180E-08, 7.560E-08, 6.850E-08, 6.140E-08, | |||
| 5614 | 5.830E-08, 5.770E-08, 5.000E-08, 4.320E-08, 3.140E-08, | |||
| 5615 | 2.890E-08, 2.640E-08, 2.390E-08, 2.140E-08, 1.890E-08, | |||
| 5616 | 1.640E-08, 1.390E-08, 1.140E-08, 8.900E-09, 6.400E-09, | |||
| 5617 | 3.900E-09, 1.400E-09, 0.000E+00}; | |||
| 5618 | ||||
| 5619 | // temperature coefficients: | |||
| 5620 | const double N2N2_N2Ft_ckd_mt_100[N2N2_N2F_ckd_mt_100_npt+addF77fields] = { | |||
| 5621 | 0.000E+00, | |||
| 5622 | 1.040E+03, 1.010E+03, 9.800E+02, 9.500E+02, 9.200E+02, | |||
| 5623 | 8.900E+02, 8.600E+02, 8.300E+02, 8.020E+02, 7.610E+02, | |||
| 5624 | 7.220E+02, 6.790E+02, 6.460E+02, 6.090E+02, 5.620E+02, | |||
| 5625 | 5.110E+02, 4.720E+02, 4.360E+02, 4.060E+02, 3.770E+02, | |||
| 5626 | 3.550E+02, 3.380E+02, 3.190E+02, 2.990E+02, 2.780E+02, | |||
| 5627 | 2.550E+02, 2.330E+02, 2.080E+02, 1.840E+02, 1.490E+02, | |||
| 5628 | 1.070E+02, 6.600E+01, 2.500E+01, -1.300E+01, -4.900E+01, | |||
| 5629 | -8.200E+01, -1.040E+02, -1.190E+02, -1.300E+02, -1.390E+02, | |||
| 5630 | -1.440E+02, -1.460E+02, -1.460E+02, -1.470E+02, -1.480E+02, | |||
| 5631 | -1.500E+02, -1.530E+02, -1.600E+02, -1.690E+02, -1.810E+02, | |||
| 5632 | -1.890E+02, -1.950E+02, -2.000E+02, -2.050E+02, -2.090E+02, | |||
| 5633 | -2.110E+02, -2.100E+02, -2.100E+02, -2.090E+02, -2.050E+02, | |||
| 5634 | -1.990E+02, -1.900E+02, -1.800E+02, -1.680E+02, -1.570E+02, | |||
| 5635 | -1.430E+02, -1.260E+02, -1.080E+02, -8.900E+01, -6.300E+01, | |||
| 5636 | -3.200E+01, 1.000E+00, 3.500E+01, 6.500E+01, 9.500E+01, | |||
| 5637 | 1.210E+02, 1.410E+02, 1.520E+02, 1.610E+02, 1.640E+02, | |||
| 5638 | 1.640E+02, 1.610E+02, 1.550E+02, 1.480E+02, 1.430E+02, | |||
| 5639 | 1.370E+02, 1.330E+02, 1.310E+02, 1.330E+02, 1.390E+02, | |||
| 5640 | 1.500E+02, 1.650E+02, 1.870E+02, 2.130E+02, 2.480E+02, | |||
| 5641 | 2.840E+02, 3.210E+02, 3.720E+02, 4.490E+02, 5.140E+02, | |||
| 5642 | 5.690E+02, 6.090E+02, 6.420E+02, 6.730E+02, 7.000E+02, | |||
| 5643 | 7.300E+02, 7.600E+02, 7.900E+02, 8.200E+02, 8.500E+02, | |||
| 5644 | 8.800E+02, 9.100E+02, 9.400E+02, 9.700E+02, 1.000E+03, | |||
| 5645 | 1.030E+03, 1.060E+03, 1.090E+03}; | |||
| 5646 | ||||
| 5647 | // CKD_MT 2.50 implementation of N2-N2 model of | |||
| 5648 | // Lafferty, W.J., A.M. Solodov,A. Weber, W.B. Olson and J._M. Hartmann, | |||
| 5649 | // Infrared collision-induced absorption by N2 near 4.3 microns for | |||
| 5650 | // atmospheric applications: measurements and emprirical modeling, | |||
| 5651 | // Appl. Optics, 35, 5911-5917, (1996). | |||
| 5652 | const Numeric N2N2_N2F_ckd_mt_250_v1 = 2001.766357; | |||
| 5653 | const Numeric N2N2_N2F_ckd_mt_250_v2 = 2710.45; | |||
| 5654 | const Numeric N2N2_N2F_ckd_mt_250_dv = 3.981461525; | |||
| 5655 | const int N2N2_N2F_ckd_mt_250_npt = 179; | |||
| 5656 | const double N2N2_N2F_ckd_mt_250[N2N2_N2F_ckd_mt_250_npt+addF77fields] = { | |||
| 5657 | 0.000E+00, 0.000E+00, 0.000E+00, 0.000E+00, 0.000E+00, | |||
| 5658 | 0.000E+00, 0.000E+00, 0.000E+00, 0.000E+00, 0.000E+00, | |||
| 5659 | 0.000E+00, 0.000E+00, 0.000E+00, 0.000E+00, 9.280E-11, | |||
| 5660 | 3.660E-10, 8.130E-10, 1.430E-09, 2.230E-09, 3.210E-09, | |||
| 5661 | 4.370E-09, 5.750E-09, 7.340E-09, 9.190E-09, 1.130E-08, | |||
| 5662 | 1.370E-08, 1.650E-08, 1.960E-08, 2.310E-08, 2.710E-08, | |||
| 5663 | 3.160E-08, 3.660E-08, 4.230E-08, 4.860E-08, 5.570E-08, | |||
| 5664 | 6.350E-08, 7.230E-08, 8.200E-08, 9.270E-08, 1.050E-07, | |||
| 5665 | 1.180E-07, 1.320E-07, 1.480E-07, 1.650E-07, 1.840E-07, | |||
| 5666 | 2.040E-07, 2.270E-07, 2.510E-07, 2.770E-07, 3.060E-07, | |||
| 5667 | 3.360E-07, 3.670E-07, 4.010E-07, 4.330E-07, 4.710E-07, | |||
| 5668 | 5.050E-07, 5.450E-07, 5.790E-07, 6.200E-07, 6.540E-07, | |||
| 5669 | 6.940E-07, 7.240E-07, 7.610E-07, 7.880E-07, 8.220E-07, | |||
| 5670 | 8.440E-07, 8.720E-07, 8.930E-07, 9.190E-07, 9.370E-07, | |||
| 5671 | 9.620E-07, 9.870E-07, 1.020E-06, 1.060E-06, 1.110E-06, | |||
| 5672 | 1.180E-06, 1.280E-06, 1.400E-06, 1.570E-06, 1.750E-06, | |||
| 5673 | 1.880E-06, 2.020E-06, 2.080E-06, 2.060E-06, 1.960E-06, | |||
| 5674 | 1.860E-06, 1.710E-06, 1.570E-06, 1.490E-06, 1.440E-06, | |||
| 5675 | 1.410E-06, 1.390E-06, 1.380E-06, 1.380E-06, 1.390E-06, | |||
| 5676 | 1.390E-06, 1.410E-06, 1.420E-06, 1.430E-06, 1.420E-06, | |||
| 5677 | 1.430E-06, 1.410E-06, 1.400E-06, 1.370E-06, 1.350E-06, | |||
| 5678 | 1.310E-06, 1.270E-06, 1.220E-06, 1.170E-06, 1.120E-06, | |||
| 5679 | 1.060E-06, 1.010E-06, 9.470E-07, 8.910E-07, 8.290E-07, | |||
| 5680 | 7.740E-07, 7.160E-07, 6.620E-07, 6.090E-07, 5.600E-07, | |||
| 5681 | 5.130E-07, 4.680E-07, 4.290E-07, 3.900E-07, 3.560E-07, | |||
| 5682 | 3.240E-07, 2.950E-07, 2.680E-07, 2.440E-07, 2.230E-07, | |||
| 5683 | 2.030E-07, 1.850E-07, 1.690E-07, 1.540E-07, 1.410E-07, | |||
| 5684 | 1.290E-07, 1.180E-07, 1.080E-07, 9.950E-08, 9.100E-08, | |||
| 5685 | 8.380E-08, 7.700E-08, 7.100E-08, 6.510E-08, 6.010E-08, | |||
| 5686 | 5.550E-08, 5.110E-08, 4.710E-08, 4.340E-08, 3.980E-08, | |||
| 5687 | 3.660E-08, 3.380E-08, 3.110E-08, 2.840E-08, 2.610E-08, | |||
| 5688 | 2.390E-08, 2.210E-08, 2.010E-08, 1.830E-08, 1.710E-08, | |||
| 5689 | 1.550E-08, 1.450E-08, 1.320E-08, 1.250E-08, 1.140E-08, | |||
| 5690 | 1.070E-08, 1.000E-08, 8.100E-09, 6.400E-09, 4.900E-09, | |||
| 5691 | 3.600E-09, 2.500E-09, 1.600E-09, 9.000E-10, 4.000E-10, | |||
| 5692 | 1.000E-10, 0.000E+00, 0.000E+00, 0.000E+00}; | |||
| 5693 | ||||
| 5694 | // temperature coefficients: | |||
| 5695 | const double N2N2_N2Ft_ckd_mt_250[N2N2_N2F_ckd_mt_250_npt+addF77fields] = { | |||
| 5696 | 0.000E+00, 0.000E+00, 0.000E+00, 0.000E+00, 0.000E+00, | |||
| 5697 | 0.000E+00, 0.000E+00, 0.000E+00, 0.000E+00, 0.000E+00, | |||
| 5698 | 0.000E+00, 0.000E+00, 0.000E+00, 0.000E+00, 1.880E-10, | |||
| 5699 | 7.160E-10, 1.530E-09, 2.580E-09, 3.840E-09, 5.270E-09, | |||
| 5700 | 6.850E-09, 8.550E-09, 1.040E-08, 1.230E-08, 1.440E-08, | |||
| 5701 | 1.650E-08, 1.880E-08, 2.130E-08, 2.400E-08, 2.690E-08, | |||
| 5702 | 3.010E-08, 3.360E-08, 3.750E-08, 4.180E-08, 4.670E-08, | |||
| 5703 | 5.210E-08, 5.830E-08, 6.520E-08, 7.290E-08, 8.170E-08, | |||
| 5704 | 9.150E-08, 1.030E-07, 1.150E-07, 1.290E-07, 1.440E-07, | |||
| 5705 | 1.610E-07, 1.800E-07, 2.020E-07, 2.250E-07, 2.510E-07, | |||
| 5706 | 2.790E-07, 3.090E-07, 3.430E-07, 3.770E-07, 4.160E-07, | |||
| 5707 | 4.540E-07, 4.990E-07, 5.370E-07, 5.850E-07, 6.250E-07, | |||
| 5708 | 6.750E-07, 7.130E-07, 7.610E-07, 7.970E-07, 8.410E-07, | |||
| 5709 | 8.720E-07, 9.100E-07, 9.380E-07, 9.720E-07, 9.940E-07, | |||
| 5710 | 1.020E-06, 1.050E-06, 1.080E-06, 1.120E-06, 1.170E-06, | |||
| 5711 | 1.240E-06, 1.340E-06, 1.470E-06, 1.660E-06, 1.870E-06, | |||
| 5712 | 2.040E-06, 2.220E-06, 2.300E-06, 2.290E-06, 2.160E-06, | |||
| 5713 | 2.050E-06, 1.870E-06, 1.710E-06, 1.620E-06, 1.580E-06, | |||
| 5714 | 1.550E-06, 1.540E-06, 1.540E-06, 1.550E-06, 1.560E-06, | |||
| 5715 | 1.570E-06, 1.590E-06, 1.590E-06, 1.600E-06, 1.580E-06, | |||
| 5716 | 1.570E-06, 1.540E-06, 1.510E-06, 1.470E-06, 1.430E-06, | |||
| 5717 | 1.370E-06, 1.310E-06, 1.250E-06, 1.180E-06, 1.110E-06, | |||
| 5718 | 1.040E-06, 9.740E-07, 9.020E-07, 8.360E-07, 7.650E-07, | |||
| 5719 | 7.050E-07, 6.430E-07, 5.860E-07, 5.320E-07, 4.820E-07, | |||
| 5720 | 4.370E-07, 3.950E-07, 3.570E-07, 3.220E-07, 2.910E-07, | |||
| 5721 | 2.630E-07, 2.390E-07, 2.160E-07, 1.960E-07, 1.780E-07, | |||
| 5722 | 1.620E-07, 1.480E-07, 1.330E-07, 1.220E-07, 1.120E-07, | |||
| 5723 | 1.020E-07, 9.280E-08, 8.420E-08, 7.700E-08, 6.990E-08, | |||
| 5724 | 6.390E-08, 5.880E-08, 5.380E-08, 4.840E-08, 4.380E-08, | |||
| 5725 | 4.020E-08, 3.690E-08, 3.290E-08, 3.050E-08, 2.720E-08, | |||
| 5726 | 2.490E-08, 2.260E-08, 2.020E-08, 1.810E-08, 1.620E-08, | |||
| 5727 | 1.500E-08, 1.310E-08, 1.100E-08, 1.020E-08, 8.730E-09, | |||
| 5728 | 8.190E-09, 6.630E-09, 5.960E-09, 5.110E-09, 4.500E-09, | |||
| 5729 | 3.810E-09, 2.680E-09, 3.050E-09, 2.480E-09, 1.370E-09, | |||
| 5730 | 1.550E-09, 4.690E-10, 5.120E-10, 0.000E+00, 0.000E+00, | |||
| 5731 | 0.000E+00, 0.000E+00, 0.000E+00, 0.000E+00}; | |||
| 5732 | ||||
| 5733 | ||||
| 5734 | // CKD_MT 1.00 implementation of oxygen collision induced fundamental model of | |||
| 5735 | // F. Thibault, V. Menoux, R. Le Doucen, L. Rosenman, | |||
| 5736 | // J.-M. Hartmann, Ch. Boulet, | |||
| 5737 | // "Infrared collision-induced absorption by O2 near 6.4 microns for | |||
| 5738 | // atmospheric applications: measurements and emprirical modeling", | |||
| 5739 | // Appl. Optics, 35, 5911-5917, (1996). | |||
| 5740 | const Numeric O2O2_O2F_ckd_mt_100_v1 = 1340.000; | |||
| 5741 | const Numeric O2O2_O2F_ckd_mt_100_v2 = 1850.000; | |||
| 5742 | const Numeric O2O2_O2F_ckd_mt_100_dv = 5.000; | |||
| 5743 | const int O2O2_O2F_ckd_mt_100_npt = 103; | |||
| 5744 | const double O2O2_O2Fo_ckd_mt_100[O2O2_O2F_ckd_mt_100_npt+addF77fields] = { | |||
| 5745 | 0.000E+00, | |||
| 5746 | 0.000E+00, 9.744E-09, 2.256E-08, 3.538E-08, 4.820E-08, | |||
| 5747 | 6.100E-08, 7.400E-08, 8.400E-08, 9.600E-08, 1.200E-07, | |||
| 5748 | 1.620E-07, 2.080E-07, 2.460E-07, 2.850E-07, 3.140E-07, | |||
| 5749 | 3.800E-07, 4.440E-07, 5.000E-07, 5.710E-07, 6.730E-07, | |||
| 5750 | 7.680E-07, 8.530E-07, 9.660E-07, 1.100E-06, 1.210E-06, | |||
| 5751 | 1.330E-06, 1.470E-06, 1.590E-06, 1.690E-06, 1.800E-06, | |||
| 5752 | 1.920E-06, 2.040E-06, 2.150E-06, 2.260E-06, 2.370E-06, | |||
| 5753 | 2.510E-06, 2.670E-06, 2.850E-06, 3.070E-06, 3.420E-06, | |||
| 5754 | 3.830E-06, 4.200E-06, 4.450E-06, 4.600E-06, 4.530E-06, | |||
| 5755 | 4.280E-06, 3.960E-06, 3.680E-06, 3.480E-06, 3.350E-06, | |||
| 5756 | 3.290E-06, 3.250E-06, 3.230E-06, 3.230E-06, 3.210E-06, | |||
| 5757 | 3.190E-06, 3.110E-06, 3.030E-06, 2.910E-06, 2.800E-06, | |||
| 5758 | 2.650E-06, 2.510E-06, 2.320E-06, 2.130E-06, 1.930E-06, | |||
| 5759 | 1.760E-06, 1.590E-06, 1.420E-06, 1.250E-06, 1.110E-06, | |||
| 5760 | 9.900E-07, 8.880E-07, 7.910E-07, 6.780E-07, 5.870E-07, | |||
| 5761 | 5.240E-07, 4.640E-07, 4.030E-07, 3.570E-07, 3.200E-07, | |||
| 5762 | 2.900E-07, 2.670E-07, 2.420E-07, 2.150E-07, 1.820E-07, | |||
| 5763 | 1.600E-07, 1.460E-07, 1.280E-07, 1.030E-07, 8.700E-08, | |||
| 5764 | 8.100E-08, 7.100E-08, 6.400E-08, 5.807E-08, 5.139E-08, | |||
| 5765 | 4.496E-08, 3.854E-08, 3.212E-08, 2.569E-08, 1.927E-08, | |||
| 5766 | 1.285E-08, 6.423E-09, 0.000E+00}; | |||
| 5767 | ||||
| 5768 | const double O2O2_O2Ft_ckd_mt_100[O2O2_O2F_ckd_mt_100_npt+addF77fields] = { | |||
| 5769 | 0.000E+00, | |||
| 5770 | 4.000E+02, 4.000E+02, 4.000E+02, 4.000E+02, 4.000E+02, | |||
| 5771 | 4.670E+02, 4.000E+02, 3.150E+02, 3.790E+02, 3.680E+02, | |||
| 5772 | 4.750E+02, 5.210E+02, 5.310E+02, 5.120E+02, 4.420E+02, | |||
| 5773 | 4.440E+02, 4.300E+02, 3.810E+02, 3.350E+02, 3.240E+02, | |||
| 5774 | 2.960E+02, 2.480E+02, 2.150E+02, 1.930E+02, 1.580E+02, | |||
| 5775 | 1.270E+02, 1.010E+02, 7.100E+01, 3.100E+01, -6.000E+00, | |||
| 5776 | -2.600E+01, -4.700E+01, -6.300E+01, -7.900E+01, -8.800E+01, | |||
| 5777 | -8.800E+01, -8.700E+01, -9.000E+01, -9.800E+01, -9.900E+01, | |||
| 5778 | -1.090E+02, -1.340E+02, -1.600E+02, -1.670E+02, -1.640E+02, | |||
| 5779 | -1.580E+02, -1.530E+02, -1.510E+02, -1.560E+02, -1.660E+02, | |||
| 5780 | -1.680E+02, -1.730E+02, -1.700E+02, -1.610E+02, -1.450E+02, | |||
| 5781 | -1.260E+02, -1.080E+02, -8.400E+01, -5.900E+01, -2.900E+01, | |||
| 5782 | 4.000E+00, 4.100E+01, 7.300E+01, 9.700E+01, 1.230E+02, | |||
| 5783 | 1.590E+02, 1.980E+02, 2.200E+02, 2.420E+02, 2.560E+02, | |||
| 5784 | 2.810E+02, 3.110E+02, 3.340E+02, 3.190E+02, 3.130E+02, | |||
| 5785 | 3.210E+02, 3.230E+02, 3.100E+02, 3.150E+02, 3.200E+02, | |||
| 5786 | 3.350E+02, 3.610E+02, 3.780E+02, 3.730E+02, 3.380E+02, | |||
| 5787 | 3.190E+02, 3.460E+02, 3.220E+02, 2.910E+02, 2.900E+02, | |||
| 5788 | 3.500E+02, 3.710E+02, 5.040E+02, 4.000E+02, 4.000E+02, | |||
| 5789 | 4.000E+02, 4.000E+02, 4.000E+02, 4.000E+02, 4.000E+02, | |||
| 5790 | 4.000E+02, 4.000E+02, 4.000E+02}; | |||
| 5791 | ||||
| 5792 | ||||
| 5793 | ||||
| 5794 | // CKD_MT 1.00 implementation of oxygen v0<-v0 band model of | |||
| 5795 | // Mate et al. over the spectral region 7550-8486 cm-1: | |||
| 5796 | // B. Mate, C. Lugez, G.T. Fraser, W.J. Lafferty, | |||
| 5797 | // "Absolute Intensities for the O2 1.27 micron | |||
| 5798 | // continuum absorption", | |||
| 5799 | // J. Geophys. Res., 104, 30,585-30,590, 1999. | |||
| 5800 | // | |||
| 5801 | // The units of these continua coefficients are 1 / (amagat_O2*amagat_air) | |||
| 5802 | // | |||
| 5803 | // Also, refer to the paper "Observed Atmospheric | |||
| 5804 | // Collision Induced Absorption in Near Infrared Oxygen Bands", | |||
| 5805 | // Mlawer, Clough, Brown, Stephen, Landry, Goldman, & Murcray, | |||
| 5806 | // Journal of Geophysical Research (1998). | |||
| 5807 | // | |||
| 5808 | // (comment: v0<--v0 band around 7536 to 8500 cm-1 (1.27mu)) | |||
| 5809 | const Numeric O2_00_ckd_mt_100_v1 = 7536.000e0; | |||
| 5810 | const Numeric O2_00_ckd_mt_100_v2 = 8500.000e0; | |||
| 5811 | const Numeric O2_00_ckd_mt_100_dv = 2.000e0; | |||
| 5812 | const int O2_00_ckd_mt_100_npt = 483; | |||
| 5813 | const double O2_00_ckd_mt_100[O2_00_ckd_mt_100_npt+addF77fields] = { | |||
| 5814 | 0.000E+00, | |||
| 5815 | 0.000E+00, 4.355E-11, 8.709E-11, 1.742E-10, 3.484E-10, | |||
| 5816 | 6.968E-10, 1.394E-09, 2.787E-09, 3.561E-09, 3.314E-09, | |||
| 5817 | 3.368E-09, 3.435E-09, 2.855E-09, 3.244E-09, 3.447E-09, | |||
| 5818 | 3.891E-09, 4.355E-09, 3.709E-09, 4.265E-09, 4.772E-09, | |||
| 5819 | 4.541E-09, 4.557E-09, 4.915E-09, 4.688E-09, 5.282E-09, | |||
| 5820 | 5.755E-09, 5.096E-09, 5.027E-09, 4.860E-09, 4.724E-09, | |||
| 5821 | 5.048E-09, 5.248E-09, 5.473E-09, 4.852E-09, 5.362E-09, | |||
| 5822 | 6.157E-09, 6.150E-09, 6.347E-09, 6.388E-09, 6.213E-09, | |||
| 5823 | 6.521E-09, 8.470E-09, 8.236E-09, 8.269E-09, 8.776E-09, | |||
| 5824 | 9.122E-09, 9.189E-09, 9.778E-09, 8.433E-09, 9.964E-09, | |||
| 5825 | 9.827E-09, 1.064E-08, 1.063E-08, 1.031E-08, 1.098E-08, | |||
| 5826 | 1.156E-08, 1.295E-08, 1.326E-08, 1.467E-08, 1.427E-08, | |||
| 5827 | 1.452E-08, 1.456E-08, 1.554E-08, 1.605E-08, 1.659E-08, | |||
| 5828 | 1.754E-08, 1.757E-08, 1.876E-08, 1.903E-08, 1.876E-08, | |||
| 5829 | 1.869E-08, 2.036E-08, 2.203E-08, 2.221E-08, 2.284E-08, | |||
| 5830 | 2.288E-08, 2.394E-08, 2.509E-08, 2.663E-08, 2.720E-08, | |||
| 5831 | 2.839E-08, 2.923E-08, 2.893E-08, 2.949E-08, 2.962E-08, | |||
| 5832 | 3.057E-08, 3.056E-08, 3.364E-08, 3.563E-08, 3.743E-08, | |||
| 5833 | 3.813E-08, 3.946E-08, 4.082E-08, 4.201E-08, 4.297E-08, | |||
| 5834 | 4.528E-08, 4.587E-08, 4.704E-08, 4.962E-08, 5.115E-08, | |||
| 5835 | 5.341E-08, 5.365E-08, 5.557E-08, 5.891E-08, 6.084E-08, | |||
| 5836 | 6.270E-08, 6.448E-08, 6.622E-08, 6.939E-08, 7.233E-08, | |||
| 5837 | 7.498E-08, 7.749E-08, 8.027E-08, 8.387E-08, 8.605E-08, | |||
| 5838 | 8.888E-08, 9.277E-08, 9.523E-08, 9.880E-08, 1.037E-07, | |||
| 5839 | 1.076E-07, 1.114E-07, 1.151E-07, 1.203E-07, 1.246E-07, | |||
| 5840 | 1.285E-07, 1.345E-07, 1.408E-07, 1.465E-07, 1.519E-07, | |||
| 5841 | 1.578E-07, 1.628E-07, 1.685E-07, 1.760E-07, 1.847E-07, | |||
| 5842 | 1.929E-07, 2.002E-07, 2.070E-07, 2.177E-07, 2.262E-07, | |||
| 5843 | 2.365E-07, 2.482E-07, 2.587E-07, 2.655E-07, 2.789E-07, | |||
| 5844 | 2.925E-07, 3.023E-07, 3.153E-07, 3.296E-07, 3.409E-07, | |||
| 5845 | 3.532E-07, 3.680E-07, 3.859E-07, 3.951E-07, 4.074E-07, | |||
| 5846 | 4.210E-07, 4.381E-07, 4.588E-07, 4.792E-07, 4.958E-07, | |||
| 5847 | 5.104E-07, 5.271E-07, 5.501E-07, 5.674E-07, 5.913E-07, | |||
| 5848 | 6.243E-07, 6.471E-07, 6.622E-07, 6.831E-07, 6.987E-07, | |||
| 5849 | 7.159E-07, 7.412E-07, 7.698E-07, 7.599E-07, 7.600E-07, | |||
| 5850 | 7.918E-07, 8.026E-07, 8.051E-07, 8.049E-07, 7.914E-07, | |||
| 5851 | 7.968E-07, 7.945E-07, 7.861E-07, 7.864E-07, 7.741E-07, | |||
| 5852 | 7.675E-07, 7.592E-07, 7.400E-07, 7.362E-07, 7.285E-07, | |||
| 5853 | 7.173E-07, 6.966E-07, 6.744E-07, 6.597E-07, 6.413E-07, | |||
| 5854 | 6.265E-07, 6.110E-07, 5.929E-07, 5.717E-07, 5.592E-07, | |||
| 5855 | 5.411E-07, 5.235E-07, 5.061E-07, 4.845E-07, 4.732E-07, | |||
| 5856 | 4.593E-07, 4.467E-07, 4.328E-07, 4.161E-07, 4.035E-07, | |||
| 5857 | 3.922E-07, 3.820E-07, 3.707E-07, 3.585E-07, 3.475E-07, | |||
| 5858 | 3.407E-07, 3.317E-07, 3.226E-07, 3.134E-07, 3.016E-07, | |||
| 5859 | 2.969E-07, 2.894E-07, 2.814E-07, 2.749E-07, 2.657E-07, | |||
| 5860 | 2.610E-07, 2.536E-07, 2.467E-07, 2.394E-07, 2.337E-07, | |||
| 5861 | 2.302E-07, 2.241E-07, 2.191E-07, 2.140E-07, 2.093E-07, | |||
| 5862 | 2.052E-07, 1.998E-07, 1.963E-07, 1.920E-07, 1.862E-07, | |||
| 5863 | 1.834E-07, 1.795E-07, 1.745E-07, 1.723E-07, 1.686E-07, | |||
| 5864 | 1.658E-07, 1.629E-07, 1.595E-07, 1.558E-07, 1.523E-07, | |||
| 5865 | 1.498E-07, 1.466E-07, 1.452E-07, 1.431E-07, 1.408E-07, | |||
| 5866 | 1.381E-07, 1.362E-07, 1.320E-07, 1.298E-07, 1.262E-07, | |||
| 5867 | 1.247E-07, 1.234E-07, 1.221E-07, 1.197E-07, 1.176E-07, | |||
| 5868 | 1.142E-07, 1.121E-07, 1.099E-07, 1.081E-07, 1.073E-07, | |||
| 5869 | 1.061E-07, 1.041E-07, 1.019E-07, 9.969E-08, 9.727E-08, | |||
| 5870 | 9.642E-08, 9.487E-08, 9.318E-08, 9.116E-08, 9.046E-08, | |||
| 5871 | 8.827E-08, 8.689E-08, 8.433E-08, 8.324E-08, 8.204E-08, | |||
| 5872 | 8.036E-08, 7.951E-08, 7.804E-08, 7.524E-08, 7.392E-08, | |||
| 5873 | 7.227E-08, 7.176E-08, 6.975E-08, 6.914E-08, 6.859E-08, | |||
| 5874 | 6.664E-08, 6.506E-08, 6.368E-08, 6.262E-08, 6.026E-08, | |||
| 5875 | 6.002E-08, 5.866E-08, 5.867E-08, 5.641E-08, 5.589E-08, | |||
| 5876 | 5.499E-08, 5.309E-08, 5.188E-08, 5.139E-08, 4.991E-08, | |||
| 5877 | 4.951E-08, 4.833E-08, 4.640E-08, 4.524E-08, 4.479E-08, | |||
| 5878 | 4.304E-08, 4.228E-08, 4.251E-08, 4.130E-08, 3.984E-08, | |||
| 5879 | 3.894E-08, 3.815E-08, 3.732E-08, 3.664E-08, 3.512E-08, | |||
| 5880 | 3.463E-08, 3.503E-08, 3.218E-08, 3.253E-08, 3.107E-08, | |||
| 5881 | 2.964E-08, 2.920E-08, 2.888E-08, 2.981E-08, 2.830E-08, | |||
| 5882 | 2.750E-08, 2.580E-08, 2.528E-08, 2.444E-08, 2.378E-08, | |||
| 5883 | 2.413E-08, 2.234E-08, 2.316E-08, 2.199E-08, 2.088E-08, | |||
| 5884 | 1.998E-08, 1.920E-08, 1.942E-08, 1.859E-08, 1.954E-08, | |||
| 5885 | 1.955E-08, 1.749E-08, 1.720E-08, 1.702E-08, 1.521E-08, | |||
| 5886 | 1.589E-08, 1.469E-08, 1.471E-08, 1.543E-08, 1.433E-08, | |||
| 5887 | 1.298E-08, 1.274E-08, 1.226E-08, 1.204E-08, 1.201E-08, | |||
| 5888 | 1.298E-08, 1.220E-08, 1.220E-08, 1.096E-08, 1.080E-08, | |||
| 5889 | 9.868E-09, 9.701E-09, 1.130E-08, 9.874E-09, 9.754E-09, | |||
| 5890 | 9.651E-09, 9.725E-09, 8.413E-09, 7.705E-09, 7.846E-09, | |||
| 5891 | 8.037E-09, 9.163E-09, 8.098E-09, 8.160E-09, 7.511E-09, | |||
| 5892 | 7.011E-09, 6.281E-09, 6.502E-09, 7.323E-09, 7.569E-09, | |||
| 5893 | 5.941E-09, 5.867E-09, 5.676E-09, 4.840E-09, 5.063E-09, | |||
| 5894 | 5.207E-09, 4.917E-09, 5.033E-09, 5.356E-09, 3.795E-09, | |||
| 5895 | 4.983E-09, 4.600E-09, 3.635E-09, 3.099E-09, 2.502E-09, | |||
| 5896 | 3.823E-09, 3.464E-09, 4.332E-09, 3.612E-09, 3.682E-09, | |||
| 5897 | 3.709E-09, 3.043E-09, 3.593E-09, 3.995E-09, 4.460E-09, | |||
| 5898 | 3.583E-09, 3.290E-09, 3.132E-09, 2.812E-09, 3.109E-09, | |||
| 5899 | 3.874E-09, 3.802E-09, 4.024E-09, 3.901E-09, 2.370E-09, | |||
| 5900 | 1.821E-09, 2.519E-09, 4.701E-09, 3.855E-09, 4.685E-09, | |||
| 5901 | 5.170E-09, 4.387E-09, 4.148E-09, 4.043E-09, 3.545E-09, | |||
| 5902 | 3.392E-09, 3.609E-09, 4.635E-09, 3.467E-09, 2.558E-09, | |||
| 5903 | 3.389E-09, 2.672E-09, 2.468E-09, 1.989E-09, 2.816E-09, | |||
| 5904 | 4.023E-09, 2.664E-09, 2.219E-09, 3.169E-09, 1.654E-09, | |||
| 5905 | 3.189E-09, 2.535E-09, 2.618E-09, 3.265E-09, 2.138E-09, | |||
| 5906 | 1.822E-09, 2.920E-09, 2.002E-09, 1.300E-09, 3.764E-09, | |||
| 5907 | 3.212E-09, 3.222E-09, 2.961E-09, 2.108E-09, 1.708E-09, | |||
| 5908 | 2.636E-09, 2.937E-09, 2.939E-09, 2.732E-09, 2.218E-09, | |||
| 5909 | 1.046E-09, 6.419E-10, 1.842E-09, 1.112E-09, 1.265E-09, | |||
| 5910 | 4.087E-09, 2.044E-09, 1.022E-09, 5.109E-10, 2.554E-10, | |||
| 5911 | 1.277E-10, 6.386E-11, 0.000E+00}; | |||
| 5912 | ||||
| 5913 | // CKD_MT 1.00 implementation of oxygen v0<-v0 band model of | |||
| 5914 | // Mate et al. over the spectral region 7550-8486 cm-1: | |||
| 5915 | // B. Mate, C. Lugez, G.T. Fraser, W.J. Lafferty, | |||
| 5916 | // "Absolute Intensities for the O2 1.27 micron | |||
| 5917 | // continuum absorption", | |||
| 5918 | // J. Geophys. Res., 104, 30,585-30,590, 1999. | |||
| 5919 | // | |||
| 5920 | // The units of these continua coefficients are 1 / (amagat_O2*amagat_air) | |||
| 5921 | // | |||
| 5922 | // Also, refer to the paper "Observed Atmospheric | |||
| 5923 | // Collision Induced Absorption in Near Infrared Oxygen Bands", | |||
| 5924 | // Mlawer, Clough, Brown, Stephen, Landry, Goldman, & Murcray, | |||
| 5925 | // Journal of Geophysical Research (1998). | |||
| 5926 | // | |||
| 5927 | // (comment: v1<--v0 band around 9100 to 11000 cm-1 (1mu)) | |||
| 5928 | const Numeric O2_10_ckd_mt_100_v1 = 9100.000e0; | |||
| 5929 | const Numeric O2_10_ckd_mt_100_v2 = 11000.000e0; | |||
| 5930 | const Numeric O2_10_ckd_mt_100_dv = 2.000e0; | |||
| 5931 | ||||
| 5932 | const Numeric O2_vis_ckd_mt_250_v1 = 15000.000e0; | |||
| 5933 | const Numeric O2_vis_ckd_mt_250_v2 = 29870.000e0; | |||
| 5934 | const Numeric O2_vis_ckd_mt_250_dv = 10.000e0; | |||
| 5935 | const int O2_vis_ckd_mt_250_npt = 1488; | |||
| 5936 | const double O2_vis_ckd_mt_250[O2_vis_ckd_mt_250_npt+addF77fields] = { | |||
| 5937 | 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, | |||
| 5938 | 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, | |||
| 5939 | 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, | |||
| 5940 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 5941 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 0.00E+00, | |||
| 5942 | 0.00E+00, 0.00E+00, 6.06E-04, 1.00E-03, 1.00E-03, | |||
| 5943 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 5944 | 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, | |||
| 5945 | 2.49E-03, 3.00E-03, 3.00E-03, 3.00E-03, 4.00E-03, | |||
| 5946 | 4.00E-03, 5.00E-03, 5.00E-03, 6.00E-03, 7.00E-03, | |||
| 5947 | 8.00E-03, 9.00E-03, 1.00E-02, 1.10E-02, 1.25E-02, | |||
| 5948 | 1.46E-02, 1.60E-02, 1.80E-02, 2.00E-02, 2.23E-02, | |||
| 5949 | 2.50E-02, 2.69E-02, 3.00E-02, 3.30E-02, 3.63E-02, | |||
| 5950 | 4.01E-02, 4.42E-02, 4.67E-02, 5.14E-02, 5.55E-02, | |||
| 5951 | 5.96E-02, 6.43E-02, 6.94E-02, 7.37E-02, 7.88E-02, | |||
| 5952 | 8.38E-02, 8.86E-02, 9.37E-02, 9.89E-02, 1.03E-01, | |||
| 5953 | 1.07E-01, 1.10E-01, 1.14E-01, 1.16E-01, 1.18E-01, | |||
| 5954 | 1.19E-01, 1.20E-01, 1.21E-01, 1.20E-01, 1.20E-01, | |||
| 5955 | 1.19E-01, 1.17E-01, 1.16E-01, 1.13E-01, 1.10E-01, | |||
| 5956 | 1.07E-01, 1.03E-01, 9.97E-02, 9.58E-02, 9.15E-02, | |||
| 5957 | 8.80E-02, 8.41E-02, 7.94E-02, 7.53E-02, 7.17E-02, | |||
| 5958 | 6.83E-02, 6.43E-02, 6.08E-02, 5.69E-02, 5.31E-02, | |||
| 5959 | 5.02E-02, 4.77E-02, 4.40E-02, 4.23E-02, 3.94E-02, | |||
| 5960 | 3.70E-02, 3.51E-02, 3.30E-02, 3.10E-02, 2.90E-02, | |||
| 5961 | 2.79E-02, 2.60E-02, 2.50E-02, 2.32E-02, 2.20E-02, | |||
| 5962 | 2.10E-02, 2.00E-02, 1.90E-02, 1.80E-02, 1.70E-02, | |||
| 5963 | 1.65E-02, 1.50E-02, 1.40E-02, 1.30E-02, 1.30E-02, | |||
| 5964 | 1.20E-02, 1.10E-02, 1.10E-02, 1.00E-02, 1.00E-02, | |||
| 5965 | 9.00E-03, 9.00E-03, 9.00E-03, 8.00E-03, 8.00E-03, | |||
| 5966 | 7.01E-03, 7.00E-03, 7.00E-03, 6.98E-03, 6.00E-03, | |||
| 5967 | 5.80E-03, 5.00E-03, 5.00E-03, 5.00E-03, 4.00E-03, | |||
| 5968 | 4.00E-03, 4.00E-03, 4.00E-03, 4.00E-03, 4.00E-03, | |||
| 5969 | 4.00E-03, 4.00E-03, 4.00E-03, 4.00E-03, 3.00E-03, | |||
| 5970 | 3.00E-03, 3.00E-03, 3.00E-03, 3.00E-03, 3.00E-03, | |||
| 5971 | 3.00E-03, 3.00E-03, 3.00E-03, 3.00E-03, 3.00E-03, | |||
| 5972 | 3.00E-03, 3.00E-03, 3.00E-03, 3.00E-03, 3.00E-03, | |||
| 5973 | 3.00E-03, 3.00E-03, 3.00E-03, 3.00E-03, 3.00E-03, | |||
| 5974 | 4.00E-03, 4.00E-03, 4.00E-03, 4.00E-03, 5.00E-03, | |||
| 5975 | 5.00E-03, 6.00E-03, 6.00E-03, 7.00E-03, 7.41E-03, | |||
| 5976 | 8.15E-03, 9.00E-03, 1.01E-02, 1.10E-02, 1.20E-02, | |||
| 5977 | 1.40E-02, 1.50E-02, 1.70E-02, 1.85E-02, 1.97E-02, | |||
| 5978 | 2.24E-02, 2.47E-02, 2.74E-02, 3.06E-02, 3.36E-02, | |||
| 5979 | 3.70E-02, 4.05E-02, 4.49E-02, 4.93E-02, 5.47E-02, | |||
| 5980 | 6.01E-02, 6.52E-02, 7.23E-02, 7.89E-02, 8.80E-02, | |||
| 5981 | 9.61E-02, 1.05E-01, 1.17E-01, 1.26E-01, 1.39E-01, | |||
| 5982 | 1.49E-01, 1.60E-01, 1.68E-01, 1.74E-01, 1.79E-01, | |||
| 5983 | 1.82E-01, 1.84E-01, 1.85E-01, 1.84E-01, 1.83E-01, | |||
| 5984 | 1.81E-01, 1.80E-01, 1.77E-01, 1.74E-01, 1.71E-01, | |||
| 5985 | 1.68E-01, 1.64E-01, 1.60E-01, 1.55E-01, 1.51E-01, | |||
| 5986 | 1.46E-01, 1.40E-01, 1.36E-01, 1.30E-01, 1.25E-01, | |||
| 5987 | 1.20E-01, 1.14E-01, 1.09E-01, 1.05E-01, 9.93E-02, | |||
| 5988 | 9.30E-02, 8.88E-02, 8.38E-02, 7.94E-02, 7.51E-02, | |||
| 5989 | 7.08E-02, 6.66E-02, 6.32E-02, 6.01E-02, 5.55E-02, | |||
| 5990 | 5.24E-02, 4.93E-02, 4.63E-02, 4.41E-02, 4.15E-02, | |||
| 5991 | 3.90E-02, 3.63E-02, 3.50E-02, 3.26E-02, 3.05E-02, | |||
| 5992 | 2.94E-02, 2.73E-02, 2.62E-02, 2.46E-02, 2.36E-02, | |||
| 5993 | 2.25E-02, 2.10E-02, 2.00E-02, 1.90E-02, 1.80E-02, | |||
| 5994 | 1.76E-02, 1.70E-02, 1.60E-02, 1.50E-02, 1.49E-02, | |||
| 5995 | 1.40E-02, 1.30E-02, 1.30E-02, 1.22E-02, 1.20E-02, | |||
| 5996 | 1.20E-02, 1.10E-02, 1.10E-02, 1.10E-02, 1.00E-02, | |||
| 5997 | 1.00E-02, 1.00E-02, 1.00E-02, 9.16E-03, 9.00E-03, | |||
| 5998 | 9.00E-03, 9.00E-03, 9.00E-03, 8.49E-03, 8.00E-03, | |||
| 5999 | 8.00E-03, 8.00E-03, 8.00E-03, 8.00E-03, 8.00E-03, | |||
| 6000 | 8.00E-03, 7.00E-03, 8.00E-03, 7.00E-03, 7.00E-03, | |||
| 6001 | 7.00E-03, 7.00E-03, 7.00E-03, 7.00E-03, 7.00E-03, | |||
| 6002 | 7.00E-03, 7.00E-03, 7.00E-03, 7.00E-03, 7.00E-03, | |||
| 6003 | 7.00E-03, 7.00E-03, 7.00E-03, 7.00E-03, 7.00E-03, | |||
| 6004 | 7.00E-03, 7.00E-03, 7.00E-03, 7.00E-03, 7.00E-03, | |||
| 6005 | 7.00E-03, 7.00E-03, 7.00E-03, 7.00E-03, 7.00E-03, | |||
| 6006 | 7.00E-03, 7.00E-03, 8.00E-03, 8.00E-03, 8.00E-03, | |||
| 6007 | 8.00E-03, 8.00E-03, 8.00E-03, 9.00E-03, 9.00E-03, | |||
| 6008 | 9.00E-03, 9.07E-03, 1.00E-02, 1.00E-02, 1.00E-02, | |||
| 6009 | 1.10E-02, 1.10E-02, 1.20E-02, 1.22E-02, 1.30E-02, | |||
| 6010 | 1.31E-02, 1.40E-02, 1.50E-02, 1.60E-02, 1.70E-02, | |||
| 6011 | 1.82E-02, 2.00E-02, 2.01E-02, 2.10E-02, 2.20E-02, | |||
| 6012 | 2.28E-02, 2.30E-02, 2.30E-02, 2.30E-02, 2.30E-02, | |||
| 6013 | 2.30E-02, 2.30E-02, 2.30E-02, 2.20E-02, 2.20E-02, | |||
| 6014 | 2.20E-02, 2.10E-02, 2.10E-02, 2.00E-02, 2.00E-02, | |||
| 6015 | 1.90E-02, 1.90E-02, 1.82E-02, 1.80E-02, 1.74E-02, | |||
| 6016 | 1.70E-02, 1.63E-02, 1.60E-02, 1.50E-02, 1.49E-02, | |||
| 6017 | 1.40E-02, 1.37E-02, 1.30E-02, 1.30E-02, 1.21E-02, | |||
| 6018 | 1.20E-02, 1.13E-02, 1.09E-02, 1.00E-02, 9.34E-03, | |||
| 6019 | 9.00E-03, 8.43E-03, 8.00E-03, 7.39E-03, 7.00E-03, | |||
| 6020 | 6.00E-03, 6.00E-03, 5.74E-03, 5.00E-03, 5.00E-03, | |||
| 6021 | 5.00E-03, 4.00E-03, 4.00E-03, 4.00E-03, 4.00E-03, | |||
| 6022 | 4.00E-03, 4.00E-03, 4.00E-03, 4.00E-03, 4.00E-03, | |||
| 6023 | 3.17E-03, 3.00E-03, 3.00E-03, 3.00E-03, 3.00E-03, | |||
| 6024 | 3.00E-03, 3.00E-03, 3.00E-03, 3.00E-03, 3.00E-03, | |||
| 6025 | 3.00E-03, 3.00E-03, 3.00E-03, 2.00E-03, 2.00E-03, | |||
| 6026 | 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, | |||
| 6027 | 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, | |||
| 6028 | 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, | |||
| 6029 | 1.04E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6030 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6031 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6032 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6033 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6034 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6035 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6036 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6037 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6038 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6039 | 1.00E-03, 1.00E-03, 1.41E-03, 2.00E-03, 2.00E-03, | |||
| 6040 | 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, | |||
| 6041 | 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, | |||
| 6042 | 2.00E-03, 2.00E-03, 2.00E-03, 1.98E-03, 1.46E-03, | |||
| 6043 | 1.05E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6044 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6045 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6046 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6047 | 1.00E-03, 1.00E-03, 1.71E-03, 2.00E-03, 2.00E-03, | |||
| 6048 | 2.00E-03, 2.00E-03, 2.00E-03, 3.00E-03, 3.00E-03, | |||
| 6049 | 3.82E-03, 4.00E-03, 4.17E-03, 5.00E-03, 6.00E-03, | |||
| 6050 | 7.00E-03, 7.73E-03, 8.07E-03, 9.70E-03, 1.17E-02, | |||
| 6051 | 1.31E-02, 1.47E-02, 1.64E-02, 1.81E-02, 2.07E-02, | |||
| 6052 | 2.37E-02, 2.70E-02, 2.97E-02, 3.27E-02, 3.70E-02, | |||
| 6053 | 4.13E-02, 4.49E-02, 4.89E-02, 5.38E-02, 5.98E-02, | |||
| 6054 | 6.45E-02, 6.94E-02, 7.41E-02, 8.01E-02, 8.51E-02, | |||
| 6055 | 9.00E-02, 9.49E-02, 9.88E-02, 1.01E-01, 1.04E-01, | |||
| 6056 | 1.07E-01, 1.07E-01, 1.06E-01, 1.03E-01, 1.00E-01, | |||
| 6057 | 9.66E-02, 8.93E-02, 8.35E-02, 7.92E-02, 7.33E-02, | |||
| 6058 | 6.84E-02, 6.40E-02, 5.91E-02, 5.57E-02, 5.26E-02, | |||
| 6059 | 5.03E-02, 4.75E-02, 4.48E-02, 4.26E-02, 4.07E-02, | |||
| 6060 | 3.83E-02, 3.69E-02, 3.47E-02, 3.24E-02, 3.11E-02, | |||
| 6061 | 2.85E-02, 2.69E-02, 2.55E-02, 2.42E-02, 2.21E-02, | |||
| 6062 | 2.09E-02, 1.93E-02, 1.77E-02, 1.62E-02, 1.60E-02, | |||
| 6063 | 1.44E-02, 1.36E-02, 1.30E-02, 1.16E-02, 1.10E-02, | |||
| 6064 | 1.00E-02, 1.00E-02, 9.00E-03, 8.27E-03, 8.00E-03, | |||
| 6065 | 7.45E-03, 7.00E-03, 7.00E-03, 6.18E-03, 6.00E-03, | |||
| 6066 | 6.00E-03, 5.00E-03, 5.00E-03, 5.00E-03, 5.00E-03, | |||
| 6067 | 4.00E-03, 4.00E-03, 4.00E-03, 4.00E-03, 4.00E-03, | |||
| 6068 | 4.00E-03, 3.00E-03, 3.00E-03, 3.00E-03, 3.00E-03, | |||
| 6069 | 3.00E-03, 3.00E-03, 3.00E-03, 3.00E-03, 2.07E-03, | |||
| 6070 | 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, | |||
| 6071 | 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, | |||
| 6072 | 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, | |||
| 6073 | 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, | |||
| 6074 | 2.00E-03, 1.28E-03, 2.00E-03, 2.00E-03, 2.00E-03, | |||
| 6075 | 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, | |||
| 6076 | 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, | |||
| 6077 | 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, | |||
| 6078 | 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, | |||
| 6079 | 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, | |||
| 6080 | 3.00E-03, 3.00E-03, 3.00E-03, 3.00E-03, 3.00E-03, | |||
| 6081 | 4.00E-03, 4.00E-03, 4.00E-03, 4.57E-03, 5.00E-03, | |||
| 6082 | 5.00E-03, 5.64E-03, 6.00E-03, 6.67E-03, 7.00E-03, | |||
| 6083 | 7.35E-03, 8.00E-03, 8.36E-03, 9.00E-03, 9.00E-03, | |||
| 6084 | 1.00E-02, 1.00E-02, 1.00E-02, 1.00E-02, 1.00E-02, | |||
| 6085 | 1.00E-02, 1.00E-02, 9.65E-03, 9.00E-03, 9.00E-03, | |||
| 6086 | 8.00E-03, 8.00E-03, 7.69E-03, 7.00E-03, 7.00E-03, | |||
| 6087 | 6.44E-03, 6.00E-03, 6.00E-03, 6.00E-03, 5.00E-03, | |||
| 6088 | 5.00E-03, 5.00E-03, 5.00E-03, 5.00E-03, 4.00E-03, | |||
| 6089 | 4.00E-03, 4.00E-03, 4.00E-03, 4.00E-03, 3.98E-03, | |||
| 6090 | 3.01E-03, 3.00E-03, 3.00E-03, 3.00E-03, 3.00E-03, | |||
| 6091 | 3.00E-03, 3.00E-03, 3.00E-03, 3.00E-03, 2.54E-03, | |||
| 6092 | 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, | |||
| 6093 | 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, | |||
| 6094 | 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, | |||
| 6095 | 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, | |||
| 6096 | 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, | |||
| 6097 | 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, | |||
| 6098 | 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, | |||
| 6099 | 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, | |||
| 6100 | 1.33E-03, 1.89E-03, 1.07E-03, 1.06E-03, 1.00E-03, | |||
| 6101 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6102 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6103 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6104 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6105 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6106 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6107 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6108 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6109 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6110 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6111 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6112 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6113 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6114 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6115 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6116 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6117 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6118 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 5.50E-04, | |||
| 6119 | 0.00E+00, 0.00E+00, 1.00E-03, 1.00E-03, 7.51E-04, | |||
| 6120 | 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, | |||
| 6121 | 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, | |||
| 6122 | 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, | |||
| 6123 | 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, | |||
| 6124 | 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, | |||
| 6125 | 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, | |||
| 6126 | 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, | |||
| 6127 | 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, | |||
| 6128 | 0.00E+00, 0.00E+00, 0.00E+00, 1.34E-04, 1.00E-03, | |||
| 6129 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6130 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6131 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6132 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6133 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6134 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6135 | 1.00E-03, 7.65E-05, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6136 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6137 | 1.00E-03, 1.20E-04, 0.00E+00, 0.00E+00, 0.00E+00, | |||
| 6138 | 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, | |||
| 6139 | 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, | |||
| 6140 | 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, | |||
| 6141 | 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, | |||
| 6142 | 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, | |||
| 6143 | 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, | |||
| 6144 | 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, | |||
| 6145 | 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, | |||
| 6146 | 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, | |||
| 6147 | 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, 0.00E+00, | |||
| 6148 | 0.00E+00, 6.09E-04, 3.47E-04, 6.97E-04, 2.60E-04, | |||
| 6149 | 7.81E-04, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6150 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6151 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6152 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6153 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6154 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6155 | 1.00E-03, 1.68E-03, 2.00E-03, 2.00E-03, 2.00E-03, | |||
| 6156 | 2.00E-03, 2.76E-03, 3.00E-03, 3.00E-03, 3.00E-03, | |||
| 6157 | 3.80E-03, 4.00E-03, 4.82E-03, 5.00E-03, 5.84E-03, | |||
| 6158 | 6.00E-03, 6.85E-03, 7.85E-03, 8.86E-03, 9.86E-03, | |||
| 6159 | 1.09E-02, 1.19E-02, 1.29E-02, 1.47E-02, 1.59E-02, | |||
| 6160 | 1.77E-02, 1.97E-02, 2.09E-02, 2.27E-02, 2.47E-02, | |||
| 6161 | 2.67E-02, 2.87E-02, 3.07E-02, 3.26E-02, 3.38E-02, | |||
| 6162 | 3.56E-02, 3.68E-02, 3.86E-02, 3.90E-02, 3.98E-02, | |||
| 6163 | 4.07E-02, 4.10E-02, 4.10E-02, 4.03E-02, 3.93E-02, | |||
| 6164 | 3.83E-02, 3.73E-02, 3.64E-02, 3.48E-02, 3.34E-02, | |||
| 6165 | 3.18E-02, 2.99E-02, 2.85E-02, 2.70E-02, 2.50E-02, | |||
| 6166 | 2.31E-02, 2.11E-02, 1.92E-02, 1.76E-02, 1.63E-02, | |||
| 6167 | 1.47E-02, 1.34E-02, 1.17E-02, 1.07E-02, 9.78E-03, | |||
| 6168 | 8.81E-03, 7.84E-03, 6.88E-03, 6.00E-03, 5.94E-03, | |||
| 6169 | 5.00E-03, 5.00E-03, 4.05E-03, 4.00E-03, 3.13E-03, | |||
| 6170 | 3.00E-03, 3.00E-03, 2.24E-03, 2.00E-03, 2.00E-03, | |||
| 6171 | 2.00E-03, 2.00E-03, 2.00E-03, 2.00E-03, 1.54E-03, | |||
| 6172 | 1.41E-03, 1.64E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6173 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6174 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6175 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6176 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6177 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6178 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6179 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6180 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6181 | 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, 1.00E-03, | |||
| 6182 | 1.00E-03, 1.15E-03, 2.00E-03, 2.00E-03, 2.00E-03, | |||
| 6183 | 2.00E-03, 2.00E-03, 2.00E-03, 2.56E-03, 3.00E-03, | |||
| 6184 | 3.00E-03, 3.30E-03, 4.00E-03, 4.00E-03, 4.04E-03, | |||
| 6185 | 4.95E-03, 5.85E-03, 6.00E-03, 6.67E-03, 7.58E-03, | |||
| 6186 | 8.48E-03, 9.39E-03, 1.03E-02, 1.14E-02, 1.31E-02, | |||
| 6187 | 1.40E-02, 1.58E-02, 1.76E-02, 1.94E-02, 2.12E-02, | |||
| 6188 | 2.30E-02, 2.56E-02, 2.89E-02, 3.16E-02, 3.44E-02, | |||
| 6189 | 3.80E-02, 4.16E-02, 4.52E-02, 4.87E-02, 5.23E-02, | |||
| 6190 | 5.59E-02, 5.91E-02, 6.20E-02, 6.53E-02, 6.71E-02, | |||
| 6191 | 6.89E-02, 6.98E-02, 7.07E-02, 7.10E-02, 7.10E-02, | |||
| 6192 | 7.06E-02, 6.97E-02, 6.89E-02, 6.80E-02, 6.71E-02, | |||
| 6193 | 6.54E-02, 6.43E-02, 6.29E-02, 6.11E-02, 5.94E-02, | |||
| 6194 | 5.74E-02, 5.48E-02, 5.31E-02, 5.05E-02, 4.86E-02, | |||
| 6195 | 4.62E-02, 4.41E-02, 4.23E-02, 4.03E-02, 3.78E-02, | |||
| 6196 | 3.61E-02, 3.43E-02, 3.26E-02, 3.08E-02, 2.91E-02, | |||
| 6197 | 2.73E-02, 2.58E-02, 2.49E-02, 2.31E-02, 2.22E-02, | |||
| 6198 | 2.07E-02, 1.95E-02, 1.86E-02, 1.77E-02, 1.69E-02, | |||
| 6199 | 1.60E-02, 1.51E-02, 1.43E-02, 1.40E-02, 1.35E-02, | |||
| 6200 | 1.27E-02, 1.18E-02, 1.10E-02, 1.10E-02, 1.02E-02, | |||
| 6201 | 1.00E-02, 1.00E-02, 9.67E-03, 8.81E-03, 8.05E-03, | |||
| 6202 | 8.90E-03, 8.24E-03, 8.00E-03, 7.53E-03, 7.00E-03, | |||
| 6203 | 7.00E-03, 7.00E-03, 7.00E-03, 7.00E-03, 6.42E-03, | |||
| 6204 | 6.00E-03, 6.00E-03, 6.00E-03, 6.00E-03, 5.18E-03, | |||
| 6205 | 5.00E-03, 5.00E-03, 5.00E-03, 4.80E-03, 4.04E-03, | |||
| 6206 | 4.89E-03, 4.27E-03, 4.00E-03, 4.00E-03, 4.00E-03, | |||
| 6207 | 4.00E-03, 4.00E-03, 4.00E-03, 4.00E-03, 4.00E-03, | |||
| 6208 | 4.00E-03, 4.00E-03, 4.00E-03, 3.20E-03, 3.00E-03, | |||
| 6209 | 3.00E-03, 3.00E-03, 3.00E-03, 3.00E-03, 3.00E-03, | |||
| 6210 | 3.00E-03, 3.00E-03, 3.00E-03, 3.00E-03, 3.00E-03, | |||
| 6211 | 3.00E-03, 3.00E-03, 3.00E-03, 3.00E-03, 3.00E-03, | |||
| 6212 | 3.00E-03, 3.75E-03, 4.00E-03, 4.00E-03, 4.00E-03, | |||
| 6213 | 4.00E-03, 4.00E-03, 4.69E-03, 5.00E-03, 5.00E-03, | |||
| 6214 | 5.15E-03, 5.97E-03, 6.00E-03, 6.61E-03, 7.43E-03, | |||
| 6215 | 8.00E-03, 8.06E-03, 8.88E-03, 9.70E-03, 1.05E-02, | |||
| 6216 | 1.13E-02, 1.21E-02, 1.30E-02, 1.38E-02, 1.52E-02, | |||
| 6217 | 1.64E-02, 1.72E-02, 1.80E-02, 1.88E-02, 1.96E-02, | |||
| 6218 | 2.04E-02, 2.10E-02, 2.10E-02, 2.10E-02, 2.10E-02, | |||
| 6219 | 2.10E-02, 2.10E-02, 2.10E-02, 2.10E-02, 2.10E-02, | |||
| 6220 | 2.05E-02, 2.00E-02, 1.99E-02, 1.91E-02, 1.90E-02, | |||
| 6221 | 1.85E-02, 1.80E-02, 1.79E-02, 1.71E-02, 1.63E-02, | |||
| 6222 | 1.55E-02, 1.47E-02, 1.40E-02, 1.40E-02, 1.33E-02, | |||
| 6223 | 1.25E-02, 1.20E-02, 1.19E-02, 1.11E-02, 1.03E-02, | |||
| 6224 | 1.00E-02, 9.75E-03, 9.00E-03, 9.00E-03, 8.37E-03, | |||
| 6225 | 8.00E-03, 8.00E-03, 8.00E-03, 7.22E-03, 7.00E-03, | |||
| 6226 | 7.00E-03, 6.86E-03, 6.07E-03, 6.00E-03, 6.00E-03, | |||
| 6227 | 6.00E-03, 5.93E-03, 5.15E-03, 5.00E-03, 5.00E-03, | |||
| 6228 | 5.00E-03, 5.00E-03, 5.00E-03, 5.00E-03, 5.00E-03, | |||
| 6229 | 5.00E-03, 5.00E-03, 5.00E-03, 5.00E-03, 5.00E-03, | |||
| 6230 | 5.00E-03, 5.00E-03, 5.00E-03, 4.68E-03, 4.00E-03, | |||
| 6231 | 4.00E-03, 4.00E-03, 4.00E-03, 4.00E-03, 4.00E-03, | |||
| 6232 | 4.00E-03, 4.00E-03, 4.00E-03, 4.00E-03, 4.00E-03, | |||
| 6233 | 4.00E-03, 4.00E-03, 4.00E-03, 4.00E-03, 4.00E-03, | |||
| 6234 | 1.00E-03, 2.00E-04, 0.}; | |||
| 6235 | ||||
| 6236 | // ################################################################################# | |||
| 6237 | // ############################## WATER VAPOR MODELS ############################### | |||
| 6238 | // ################################################################################# | |||
| 6239 | //! MPM87H2OAbsModel | |||
| 6240 | /*! | |||
| 6241 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 6242 | H2O (lines+continuum) according to MPM87 [1/m] | |||
| 6243 | \param CCin scaling factor for the H2O-continuum [1] | |||
| 6244 | \param CLin scaling factor for the H2O-line strengths [1] | |||
| 6245 | \param CWin scaling factor for the H2O-line widths [1] | |||
| 6246 | \param model allows user defined input parameter set | |||
| 6247 | (CCin, CLin, and CWin)<br> or choice of | |||
| 6248 | pre-defined parameters of specific models (see note below). | |||
| 6249 | \param f_grid predefined frequency grid [Hz] | |||
| 6250 | \param abs_p predefined pressure grid [Pa] | |||
| 6251 | \param abs_t predefined temperature grid [K] | |||
| 6252 | \param vmr H2O volume mixing ratio [1] | |||
| 6253 | ||||
| 6254 | \note Except for model 'user' the input parameters CCin, CLin, and CWin | |||
| 6255 | are neglected (model dominates over parameters).<br> | |||
| 6256 | Allowed models: 'MPM87', 'MPM87Lines', 'MPM87Continuum', and 'user'. | |||
| 6257 | See the user guide for detailed explanations. | |||
| 6258 | ||||
| 6259 | \remark H. J. Liebe,<br> | |||
| 6260 | <i>A contribution to modeling atmospheric millimeter-wave properties</i>,<br> | |||
| 6261 | Frequenz, 41, 1987, 31-36<br> | |||
| 6262 | and<br> | |||
| 6263 | H. J. Liebe and D. H. Layton,<br> | |||
| 6264 | <i>Millimeter-wave properties of the atmosphere: | |||
| 6265 | Laboratory studies and propagation modeling</i>,<br> | |||
| 6266 | U.S. Dept. of Commerce, National Telecommunications and Information | |||
| 6267 | Administration, Institute for Communication Sciences,<br> | |||
| 6268 | 325 Broadway, Boulder, CO 80303-3328, report 87224. | |||
| 6269 | ||||
| 6270 | \author Thomas Kuhn | |||
| 6271 | \date 2001-11-05 | |||
| 6272 | */ | |||
| 6273 | ||||
| 6274 | void MPM87H2OAbsModel (MatrixView pxsec, | |||
| 6275 | const Numeric CCin, // continuum scale factor | |||
| 6276 | const Numeric CLin, // line strength scale factor | |||
| 6277 | const Numeric CWin, // line broadening scale factor | |||
| 6278 | const String& model, | |||
| 6279 | ConstVectorView f_grid, | |||
| 6280 | ConstVectorView abs_p, | |||
| 6281 | ConstVectorView abs_t, | |||
| 6282 | ConstVectorView vmr, | |||
| 6283 | const Verbosity& verbosity) | |||
| 6284 | { | |||
| 6285 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 6286 | ||||
| 6287 | // | |||
| 6288 | // Coefficients are from Liebe, Radio Science, 20(5), 1985, 1069 | |||
| 6289 | // 0 1 2 3 | |||
| 6290 | // f0 b1 b2 b3 | |||
| 6291 | // [GHz] [kHz/kPa] [1] [GHz/kPa] | |||
| 6292 | const Numeric mpm87[30][4] = { | |||
| 6293 | { 22.235080, 0.1090, 2.143, 27.84e-3}, | |||
| 6294 | { 67.813960, 0.0011, 8.730, 27.60e-3}, | |||
| 6295 | { 119.995940, 0.0007, 8.347, 27.00e-3}, | |||
| 6296 | { 183.310117, 2.3000, 0.653, 31.64e-3}, | |||
| 6297 | { 321.225644, 0.0464, 6.156, 21.40e-3}, | |||
| 6298 | { 325.152919, 1.5400, 1.515, 29.70e-3}, | |||
| 6299 | { 336.187000, 0.0010, 9.802, 26.50e-3}, | |||
| 6300 | { 380.197372, 11.9000, 1.018, 30.36e-3}, | |||
| 6301 | { 390.134508, 0.0044, 7.318, 19.00e-3}, | |||
| 6302 | { 437.346667, 0.0637, 5.015, 13.70e-3}, | |||
| 6303 | { 439.150812, 0.9210, 3.561, 16.40e-3}, | |||
| 6304 | { 443.018295, 0.1940, 5.015, 14.40e-3}, | |||
| 6305 | { 448.001075, 10.6000, 1.370, 23.80e-3}, | |||
| 6306 | { 470.888947, 0.3300, 3.561, 18.20e-3}, | |||
| 6307 | { 474.689127, 1.2800, 2.342, 19.80e-3}, | |||
| 6308 | { 488.491133, 0.2530, 2.814, 24.90e-3}, | |||
| 6309 | { 503.568532, 0.0374, 6.693, 11.50e-3}, | |||
| 6310 | { 504.482692, 0.0125, 6.693, 11.90e-3}, | |||
| 6311 | { 556.936002, 510.0000, 0.114, 30.00e-3}, | |||
| 6312 | { 620.700807, 5.0900, 2.150, 22.30e-3}, | |||
| 6313 | { 658.006500, 0.2740, 7.767, 30.00e-3}, | |||
| 6314 | { 752.033227, 250.0000, 0.336, 28.60e-3}, | |||
| 6315 | { 841.073593, 0.0130, 8.113, 14.10e-3}, | |||
| 6316 | { 859.865000, 0.1330, 7.989, 28.60e-3}, | |||
| 6317 | { 899.407000, 0.0550, 7.845, 28.60e-3}, | |||
| 6318 | { 902.555000, 0.0380, 8.360, 26.40e-3}, | |||
| 6319 | { 906.205524, 0.1830, 5.039, 23.40e-3}, | |||
| 6320 | { 916.171582, 8.5600, 1.369, 25.30e-3}, | |||
| 6321 | { 970.315022, 9.1600, 1.842, 24.00e-3}, | |||
| 6322 | { 987.926764, 138.0000, 0.178, 28.60e-3}}; | |||
| 6323 | ||||
| 6324 | // --------- STANDARD MODEL PARAMETERS --------------------------------------------------- | |||
| 6325 | // standard values for the MPM87 model (Radio Science, 20(5), 1985, 1069): | |||
| 6326 | const Numeric CC_MPM87 = 1.00000; | |||
| 6327 | const Numeric CL_MPM87 = 1.00000; | |||
| 6328 | const Numeric CW_MPM87 = 1.00000; | |||
| 6329 | // --------------------------------------------------------------------------------------- | |||
| 6330 | ||||
| 6331 | ||||
| 6332 | // select the parameter set (!!model dominates values!!): | |||
| 6333 | Numeric CC, CL, CW; | |||
| 6334 | if ( model == "MPM87" ) | |||
| 6335 | { | |||
| 6336 | CC = CC_MPM87; | |||
| 6337 | CL = CL_MPM87; | |||
| 6338 | CW = CW_MPM87; | |||
| 6339 | } | |||
| 6340 | else if ( model == "MPM87Lines" ) | |||
| 6341 | { | |||
| 6342 | CC = 0.000; | |||
| 6343 | CL = CL_MPM87; | |||
| 6344 | CW = CW_MPM87; | |||
| 6345 | } | |||
| 6346 | else if ( model == "MPM87Continuum" ) | |||
| 6347 | { | |||
| 6348 | CC = CC_MPM87; | |||
| 6349 | CL = 0.000; | |||
| 6350 | CW = 0.000; | |||
| 6351 | } | |||
| 6352 | else if ( model == "user" ) | |||
| 6353 | { | |||
| 6354 | CC = CCin; | |||
| 6355 | CL = CLin; | |||
| 6356 | CW = CWin; | |||
| 6357 | } | |||
| 6358 | else | |||
| 6359 | { | |||
| 6360 | ostringstream os; | |||
| 6361 | os << "H2O-MPM87: ERROR! Wrong model values given.\n" | |||
| 6362 | << "Valid models are: 'MPM87', 'MPM87Lines', 'MPM87Continuum', and 'user'" << '\n'; | |||
| 6363 | throw runtime_error(os.str()); | |||
| 6364 | } | |||
| 6365 | out3 << "H2O-MPM87: (model=" << model << ") parameter values in use:\n" | |||
| 6366 | << " CC = " << CC << "\n" | |||
| 6367 | << " CL = " << CL << "\n" | |||
| 6368 | << " CW = " << CW << "\n"; | |||
| 6369 | ||||
| 6370 | ||||
| 6371 | // number of lines of liebe line catalog (30 lines) | |||
| 6372 | const Index i_first = 0; | |||
| 6373 | const Index i_last = 29; | |||
| 6374 | ||||
| 6375 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 6376 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 6377 | ||||
| 6378 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 6379 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 6379 , "n_p==abs_t.nelem()") : (void)0); | |||
| 6380 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 6380 , "n_p==vmr.nelem()") : (void)0); | |||
| 6381 | ||||
| 6382 | // Check that dimensions of pxsec are consistent with n_f | |||
| 6383 | // and n_p. It should be [n_f,n_p]: | |||
| 6384 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 6384 , "n_f==pxsec.nrows()") : (void)0); | |||
| 6385 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 6385 , "n_p==pxsec.ncols()") : (void)0); | |||
| 6386 | ||||
| 6387 | // Loop pressure/temperature (pressure in [hPa] therefore the factor 0.01) | |||
| 6388 | for ( Index i=0; i<n_p; ++i ) | |||
| 6389 | { | |||
| 6390 | // here the total pressure is not multiplied by the H2O vmr for the | |||
| 6391 | // P_H2O calculation because we calculate pxsec and not abs: abs = vmr * pxsec | |||
| 6392 | Numeric pwv_dummy = Pa_to_kPa * abs_p[i]; | |||
| 6393 | // relative inverse temperature [1] | |||
| 6394 | Numeric theta = (300.0 / abs_t[i]); | |||
| 6395 | // H2O partial pressure [kPa] | |||
| 6396 | Numeric pwv = Pa_to_kPa * abs_p[i] * vmr[i]; | |||
| 6397 | // dry air partial pressure [kPa] | |||
| 6398 | Numeric pda = (Pa_to_kPa * abs_p[i]) - pwv; | |||
| 6399 | // H2O continuum absorption [dB/km/GHz2] like in the original MPM87 | |||
| 6400 | Numeric Nppc = CC * pwv_dummy * pow(theta, (Numeric)3.0) * 1.000e-5 | |||
| 6401 | * ( (0.113 * pda) + (3.57 * pwv * pow(theta, (Numeric)7.8)) ); | |||
| 6402 | ||||
| 6403 | // Loop over input frequency | |||
| 6404 | for ( Index s=0; s<n_f; ++s ) | |||
| 6405 | { | |||
| 6406 | // input frequency in [GHz] | |||
| 6407 | Numeric ff = f_grid[s] * Hz_to_GHz; | |||
| 6408 | // H2O line contribution at position f | |||
| 6409 | Numeric Nppl = 0.000; | |||
| 6410 | ||||
| 6411 | // Loop over MPM89 H2O spectral lines | |||
| 6412 | for ( Index l = i_first; l <= i_last; ++l ) | |||
| 6413 | { | |||
| 6414 | // line strength [kHz] | |||
| 6415 | Numeric strength = CL * pwv_dummy * mpm87[l][1] | |||
| 6416 | * pow(theta,(Numeric)3.5) * exp(mpm87[l][2]*(1.000-theta)); | |||
| 6417 | // line broadening parameter [GHz] | |||
| 6418 | Numeric gam = CW * mpm87[l][3] * | |||
| 6419 | ( (4.80 * pwv * pow(theta, (Numeric)1.1)) + | |||
| 6420 | ( pda * pow(theta, (Numeric)0.6)) ); | |||
| 6421 | // effective line width with Doppler broadening [GHz] | |||
| 6422 | // gam = sqrt(gam*gam + (2.14e-12 * mpm87[l][0] * mpm87[l][0] / theta)); | |||
| 6423 | // H2O line absorption [dB/km/GHz] like in the original MPM87 | |||
| 6424 | Nppl += strength * MPMLineShapeFunction(gam, mpm87[l][0], ff); | |||
| 6425 | } | |||
| 6426 | // pxsec = abs/vmr [1/m] but MPM87 is in [dB/km] --> conversion necessary | |||
| 6427 | pxsec(s,i) += dB_km_to_1_m * 0.1820 * ff * ( Nppl + (Nppc * ff) ); | |||
| 6428 | } | |||
| 6429 | } | |||
| 6430 | return; | |||
| 6431 | } | |||
| 6432 | // | |||
| 6433 | // ################################################################################# | |||
| 6434 | //! MPM89H2OAbsModel | |||
| 6435 | /*! | |||
| 6436 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 6437 | H2O (lines+continuum) according to MPM89 [1/m] | |||
| 6438 | \param CCin scaling factor for the H2O-continuum [1] | |||
| 6439 | \param CLin scaling factor for the line strengths [1] | |||
| 6440 | \param CWin scaling factor for the line widths [1] | |||
| 6441 | \param model allows user defined input parameter set | |||
| 6442 | (CCin, CLin, and CWin)<br> or choice of | |||
| 6443 | pre-defined parameters of specific models (see note below). | |||
| 6444 | \param f_grid predefined frequency grid [Hz] | |||
| 6445 | \param abs_p predefined pressure grid [Pa] | |||
| 6446 | \param abs_t predefined temperature grid [K] | |||
| 6447 | \param vmr H2O volume mixing ratio [1] | |||
| 6448 | ||||
| 6449 | \note Except for model 'user' the input parameters CCin, CLin, and CWin | |||
| 6450 | are neglected (model dominates over parameters).<br> | |||
| 6451 | Allowed models: 'MPM89', 'MPM89Lines', 'MPM89Continuum', and 'user'. | |||
| 6452 | See the user guide for detailed explanations. | |||
| 6453 | ||||
| 6454 | \remark Reference: H. J. Liebe, Int. J. Infrared and Millimeter Waves, 10(6), 1989, 631. | |||
| 6455 | ||||
| 6456 | \author Thomas Kuhn | |||
| 6457 | \date 2001-11-05 | |||
| 6458 | */ | |||
| 6459 | ||||
| 6460 | void MPM89H2OAbsModel (MatrixView pxsec, | |||
| 6461 | const Numeric CCin, // continuum scale factor | |||
| 6462 | const Numeric CLin, // line strength scale factor | |||
| 6463 | const Numeric CWin, // line broadening scale factor | |||
| 6464 | const String& model, // model | |||
| 6465 | ConstVectorView f_grid, | |||
| 6466 | ConstVectorView abs_p, | |||
| 6467 | ConstVectorView abs_t, | |||
| 6468 | ConstVectorView vmr, | |||
| 6469 | const Verbosity& verbosity) | |||
| 6470 | { | |||
| 6471 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 6472 | ||||
| 6473 | // | |||
| 6474 | // Coefficients are from Liebe, Int. J. Infrared and Millimeter Waves, 10(6), 1989, 631 | |||
| 6475 | // 0 1 2 3 4 5 6 | |||
| 6476 | // f0 b1 b2 b3 b4 b5 b6 | |||
| 6477 | // [GHz] [kHz/kPa] [1] [MHz/kPa] [1] [1] [1] | |||
| 6478 | const Numeric mpm89[30][7] = { | |||
| 6479 | { 22.235080, 0.1090, 2.143, 28.11, 0.69, 4.80, 1.00}, | |||
| 6480 | { 67.813960, 0.0011, 8.735, 28.58, 0.69, 4.93, 0.82}, | |||
| 6481 | { 119.995940, 0.0007, 8.356, 29.48, 0.70, 4.78, 0.79}, | |||
| 6482 | { 183.310074, 2.3000, 0.668, 28.13, 0.64, 5.30, 0.85}, | |||
| 6483 | { 321.225644, 0.0464, 6.181, 23.03, 0.67, 4.69, 0.54}, | |||
| 6484 | { 325.152919, 1.5400, 1.540, 27.83, 0.68, 4.85, 0.74}, | |||
| 6485 | { 336.187000, 0.0010, 9.829, 26.93, 0.69, 4.74, 0.61}, | |||
| 6486 | { 380.197372, 11.9000, 1.048, 28.73, 0.69, 5.38, 0.84}, | |||
| 6487 | { 390.134508, 0.0044, 7.350, 21.52, 0.63, 4.81, 0.55}, | |||
| 6488 | { 437.346667, 0.0637, 5.050, 18.45, 0.60, 4.23, 0.48}, | |||
| 6489 | { 439.150812, 0.9210, 3.596, 21.00, 0.63, 4.29, 0.52}, | |||
| 6490 | { 443.018295, 0.1940, 5.050, 18.60, 0.60, 4.23, 0.50}, | |||
| 6491 | { 448.001075, 10.6000, 1.405, 26.32, 0.66, 4.84, 0.67}, | |||
| 6492 | { 470.888947, 0.3300, 3.599, 21.52, 0.66, 4.57, 0.65}, | |||
| 6493 | { 474.689127, 1.2800, 2.381, 23.55, 0.65, 4.65, 0.64}, | |||
| 6494 | { 488.491133, 0.2530, 2.853, 26.02, 0.69, 5.04, 0.72}, | |||
| 6495 | { 503.568532, 0.0374, 6.733, 16.12, 0.61, 3.98, 0.43}, | |||
| 6496 | { 504.482692, 0.0125, 6.733, 16.12, 0.61, 4.01, 0.45}, | |||
| 6497 | { 556.936002, 510.0000, 0.159, 32.10, 0.69, 4.11, 1.00}, | |||
| 6498 | { 620.700807, 5.0900, 2.200, 24.38, 0.71, 4.68, 0.68}, | |||
| 6499 | { 658.006500, 0.2740, 7.820, 32.10, 0.69, 4.14, 1.00}, | |||
| 6500 | { 752.033227, 250.0000, 0.396, 30.60, 0.68, 4.09, 0.84}, | |||
| 6501 | { 841.073593, 0.0130, 8.180, 15.90, 0.33, 5.76, 0.45}, | |||
| 6502 | { 859.865000, 0.1330, 7.989, 30.60, 0.68, 4.09, 0.84}, | |||
| 6503 | { 899.407000, 0.0550, 7.917, 29.85, 0.68, 4.53, 0.90}, | |||
| 6504 | { 902.555000, 0.0380, 8.432, 28.65, 0.70, 5.10, 0.95}, | |||
| 6505 | { 906.205524, 0.1830, 5.111, 24.08, 0.70, 4.70, 0.53}, | |||
| 6506 | { 916.171582, 8.5600, 1.442, 26.70, 0.70, 4.78, 0.78}, | |||
| 6507 | { 970.315022, 9.1600, 1.920, 25.50, 0.64, 4.94, 0.67}, | |||
| 6508 | { 987.926764, 138.0000, 0.258, 29.85, 0.68, 4.55, 0.90}}; | |||
| 6509 | ||||
| 6510 | // --------- STANDARD MODEL PARAMETERS --------------------------------------------------- | |||
| 6511 | // standard values for the MPM89 model | |||
| 6512 | // (Liebe, Int. J. Infrared and Millimeter Waves, 10(6), 1989, 631): | |||
| 6513 | const Numeric CC_MPM89 = 1.00000; | |||
| 6514 | const Numeric CL_MPM89 = 1.00000; | |||
| 6515 | const Numeric CW_MPM89 = 1.00000; | |||
| 6516 | // --------------------------------------------------------------------------------------- | |||
| 6517 | ||||
| 6518 | ||||
| 6519 | // select the parameter set (!!model goes for values!!): | |||
| 6520 | Numeric CC, CL, CW; | |||
| 6521 | if ( model == "MPM89" ) | |||
| 6522 | { | |||
| 6523 | CC = CC_MPM89; | |||
| 6524 | CL = CL_MPM89; | |||
| 6525 | CW = CW_MPM89; | |||
| 6526 | } | |||
| 6527 | else if ( model == "MPM89Lines" ) | |||
| 6528 | { | |||
| 6529 | CC = 0.000; | |||
| 6530 | CL = CL_MPM89; | |||
| 6531 | CW = CW_MPM89; | |||
| 6532 | } | |||
| 6533 | else if ( model == "MPM89Continuum" ) | |||
| 6534 | { | |||
| 6535 | CC = CC_MPM89; | |||
| 6536 | CL = 0.000; | |||
| 6537 | CW = 0.000; | |||
| 6538 | } | |||
| 6539 | else if ( model == "user" ) | |||
| 6540 | { | |||
| 6541 | CC = CCin; | |||
| 6542 | CL = CLin; | |||
| 6543 | CW = CWin; | |||
| 6544 | } | |||
| 6545 | else | |||
| 6546 | { | |||
| 6547 | ostringstream os; | |||
| 6548 | os << "H2O-MPM89: ERROR! Wrong model values given.\n" | |||
| 6549 | << "Valid models are: 'MPM89', 'MPM89Lines', 'MPM89Continuum', and 'user'" << '\n'; | |||
| 6550 | throw runtime_error(os.str()); | |||
| 6551 | } | |||
| 6552 | out3 << "H2O-MPM89: (model=" << model << ") parameter values in use:\n" | |||
| 6553 | << " CC = " << CC << "\n" | |||
| 6554 | << " CL = " << CL << "\n" | |||
| 6555 | << " CW = " << CW << "\n"; | |||
| 6556 | ||||
| 6557 | ||||
| 6558 | // number of lines of Liebe line catalog (30 lines) | |||
| 6559 | const Index i_first = 0; | |||
| 6560 | const Index i_last = 29; | |||
| 6561 | ||||
| 6562 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 6563 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 6564 | ||||
| 6565 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 6566 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 6566 , "n_p==abs_t.nelem()") : (void)0); | |||
| 6567 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 6567 , "n_p==vmr.nelem()") : (void)0); | |||
| 6568 | ||||
| 6569 | // Check that dimensions of pxsec are consistent with n_f | |||
| 6570 | // and n_p. It should be [n_f,n_p]: | |||
| 6571 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 6571 , "n_f==pxsec.nrows()") : (void)0); | |||
| 6572 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 6572 , "n_p==pxsec.ncols()") : (void)0); | |||
| 6573 | ||||
| 6574 | // Loop pressure/temperature (pressure in [hPa] therefore the factor 0.01) | |||
| 6575 | for ( Index i=0; i<n_p; ++i ) | |||
| 6576 | { | |||
| 6577 | // here the total pressure is not multiplied by the H2O vmr for the | |||
| 6578 | // P_H2O calculation because we calculate pxsec and not abs: abs = vmr * pxsec | |||
| 6579 | Numeric pwv_dummy = Pa_to_kPa * abs_p[i]; | |||
| 6580 | // relative inverse temperature [1] | |||
| 6581 | Numeric theta = (300.0 / abs_t[i]); | |||
| 6582 | // H2O partial pressure [kPa] | |||
| 6583 | Numeric pwv = Pa_to_kPa * abs_p[i] * vmr[i]; | |||
| 6584 | // dry air partial pressure [kPa] | |||
| 6585 | Numeric pda = (Pa_to_kPa * abs_p[i]) - pwv; | |||
| 6586 | // H2O continuum absorption [dB/km/GHz^2] like in the original MPM89 | |||
| 6587 | Numeric Nppc = CC * pwv_dummy * pow(theta, (Numeric)3.0) * 1.000e-5 | |||
| 6588 | * ( (0.113 * pda) + (3.57 * pwv * pow(theta, (Numeric)7.5)) ); | |||
| 6589 | ||||
| 6590 | // Loop over input frequency | |||
| 6591 | for ( Index s=0; s<n_f; ++s ) | |||
| 6592 | { | |||
| 6593 | // input frequency in [GHz] | |||
| 6594 | Numeric ff = f_grid[s] * Hz_to_GHz; | |||
| 6595 | // H2O line contribution at position f | |||
| 6596 | Numeric Nppl = 0.000; | |||
| 6597 | ||||
| 6598 | // Loop over MPM89 spectral lines: | |||
| 6599 | for ( Index l = i_first; l <= i_last; ++l ) | |||
| 6600 | { | |||
| 6601 | // line strength [kHz] | |||
| 6602 | Numeric strength = CL * pwv_dummy * mpm89[l][1] | |||
| 6603 | * pow(theta, (Numeric)3.5) * exp(mpm89[l][2]*(1.000-theta)); | |||
| 6604 | // line broadening parameter [GHz] | |||
| 6605 | Numeric gam = CW * mpm89[l][3] * 0.001 | |||
| 6606 | * ( mpm89[l][5] * pwv * pow(theta, mpm89[l][6]) + | |||
| 6607 | pda * pow(theta, mpm89[l][4]) ); | |||
| 6608 | // Doppler line width [GHz] | |||
| 6609 | // Numeric gamd = 1.46e-6 * mpm89[l][0] / sqrt(theta); | |||
| 6610 | // effective line width [GHz] | |||
| 6611 | // gam = 0.535 * gam + sqrt(0.217*gam*gam + gamd*gamd); | |||
| 6612 | // H2O line absorption [dB/km/GHz] like in the original MPM89 | |||
| 6613 | Nppl += strength * MPMLineShapeFunction(gam, mpm89[l][0], ff); | |||
| 6614 | } | |||
| 6615 | // pxsec = abs/vmr [1/m] but MPM89 is in [dB/km] --> conversion necessary | |||
| 6616 | pxsec(s,i) += dB_km_to_1_m * 0.1820 * ff * ( Nppl + (Nppc * ff) ); | |||
| 6617 | } | |||
| 6618 | } | |||
| 6619 | return; | |||
| 6620 | } | |||
| 6621 | // | |||
| 6622 | // ################################################################################# | |||
| 6623 | //! MPM02H2OAbsModel | |||
| 6624 | /*! | |||
| 6625 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 6626 | H2O (lines+continuum) according to MPM93 [1/m] | |||
| 6627 | \param CCin scaling factor for the H2O-continuum [1] | |||
| 6628 | \param CLin scaling factor for the line strengths [1] | |||
| 6629 | \param CWin scaling factor for the line widths [1] | |||
| 6630 | \param model allows user defined input parameter set | |||
| 6631 | (CCin, CLin, and CWin)<br> or choice of | |||
| 6632 | pre-defined parameters of specific models (see note below). | |||
| 6633 | \param f_grid predefined frequency grid [Hz] | |||
| 6634 | \param abs_p predefined pressure grid [Pa] | |||
| 6635 | \param abs_t predefined temperature grid [K] | |||
| 6636 | \param vmr H2O volume mixing ratio [1] | |||
| 6637 | ||||
| 6638 | \note Except for model 'user' the input parameters CCin, CLin, and CWin | |||
| 6639 | are neglected (model dominates over parameters).<br> | |||
| 6640 | Allowed models: 'MPM93', 'MPM93Lines', 'MPM93Continuum', | |||
| 6641 | and 'user'. See the user guide for detailed explanations. | |||
| 6642 | ||||
| 6643 | \remark Reference: H. J. Liebe and G. A. Hufford and M. G. Cotton,<br> | |||
| 6644 | <i>Propagation modeling of moist air and suspended water/ice | |||
| 6645 | particles at frequencies below 1000 GHz</i>,<br> | |||
| 6646 | AGARD 52nd Specialists Meeting of the Electromagnetic Wave | |||
| 6647 | Propagation Panel,<br> Palma de Mallorca, Spain, 1993, May 17-21 | |||
| 6648 | ||||
| 6649 | \attention Corrected version of MPM93 by TKS, iup, 2002 | |||
| 6650 | The H2O lines at 547.676440 GHz and 552.020960 GHz are isotopologue lines:<br> | |||
| 6651 | 547 GHz is from the isotopologue 1-8-1 (HITRAN code 181, JPL code 20003) with an | |||
| 6652 | isotopologue ratio of 0.00199983 and <br> | |||
| 6653 | 552 GHz is from the isotopologue 1-7-1 (HITRAN code 171, JPL code 19003) with an | |||
| 6654 | isotopologue ratio of 0.00037200.<br> | |||
| 6655 | The original source code of MPM93 has these isotopologue ratios not included | |||
| 6656 | in the line strength parameter b1, which is an error.<br> | |||
| 6657 | In the arts implementation the line strength parameter b1 of these two lines | |||
| 6658 | is multiplied with the appropriate isotopologue ratio. | |||
| 6659 | ||||
| 6660 | \author Thomas Kuhn | |||
| 6661 | \date 2002-05-06 | |||
| 6662 | */ | |||
| 6663 | ||||
| 6664 | void MPM02H2OAbsModel (MatrixView pxsec, | |||
| 6665 | const Numeric CCin, // continuum scale factor | |||
| 6666 | const Numeric CLin, // line strength scale factor | |||
| 6667 | const Numeric CWin, // line broadening scale factor | |||
| 6668 | const String& model, | |||
| 6669 | ConstVectorView f_grid, | |||
| 6670 | ConstVectorView abs_p, | |||
| 6671 | ConstVectorView abs_t, | |||
| 6672 | ConstVectorView vmr, | |||
| 6673 | const Verbosity& verbosity) | |||
| 6674 | { | |||
| 6675 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 6676 | ||||
| 6677 | // | |||
| 6678 | /* | |||
| 6679 | CTKS OTHER DATA USED IF NOT FROM THEORETICAL CALC. IN A. BAUER ET AL. 41(1989)49-54: | |||
| 6680 | CTKS -------------------------------------------------------------------------------------------------------------- | |||
| 6681 | CTKS | T=300 K | T=300 K | T=300 K | | |||
| 6682 | CTKS F ISO|GWVHZO NWVHZO| GWVNZ NWVNZ| GWVAIR NWVAIR| REFERENCE | |||
| 6683 | CTKS GHZ 1 |MHZ/TORR 1 | MHZ/TORR 1 | MHZ/TORR 1 | | |||
| 6684 | CTKS -------------------------------------------------------------------------------------------------------------- | |||
| 6685 | CTKS 22.2 1 18.00(18) - 4.10 -- 3.77 -- LIEBE ET AL., J.CHEM.PHYS., 50(1969)727 | |||
| 6686 | CTKS 183.3 1 19.88 0.85 4.07(7) 0.63(10) 3.75(6) 0.64(10) A. BAUER ET AL. JQSRT 41(1989)49-54 | |||
| 6687 | CTKS 183.3 1 - - 4.19(17) 0.74(3) 3.89(14) 0.76(3) T. M. GOYETTE ET AL. J. MOLEC. SPEC, 143(1990)346 | |||
| 6688 | CTKS 203.4 2 -- -- 4.214 0.93 3.833 0.89 J.-M. COLMONT ET AL. J. MOLEC. SPEC. 193(1999)233-243 | |||
| 6689 | CTKS 225.9 4 -- -- 4.21 0.70 3.798 0.75 J.-M. COLMONT ET AL. J. MOLEC. SPEC. 193(1999)233-243 | |||
| 6690 | CTKS 241.6 4 -- -- 4.45 0.77 4.08 0.80 J.-M. COLMONT ET AL. J. MOLEC. SPEC. 193(1999)233-243 | |||
| 6691 | CTKS 241.9 4 -- -- 3.47 0.67 3.07 0.70 J.-M. COLMONT ET AL. J. MOLEC. SPEC. 193(1999)233-243 | |||
| 6692 | CTKS 325.1 1 -- -- 4.011 0.63 3.633 0.64 J.-M. COLMONT ET AL. J. MOLEC. SPEC. 193(1999)233-243 | |||
| 6693 | CTKS 380.2 1 20.61(7) 0.89(1) 4.24(7) 0.52(14) 3.83(6) 0.54(14) A. BAUER ET AL. JQSRT 41(1987) 531 | |||
| 6694 | CTKS 380.2 1 - - 4.16(4) 0.70(3) 3.80 0.72 T. M. GOYETTE ET AL. JQSRT 41(1993)485 | |||
| 6695 | CTKS 439.2 1 12.95(25)0.62(9) -- -- -- -- V. N. MARKOV, J. MOLEC. SPEC, 164(1994)233 | |||
| 6696 | CTKS 752.0 1 4.16(18) -- 3.75 -- S. S. D. GASSTER ET AL. JOSA, 5(1988)593 | |||
| 6697 | CTKS 987.9 1 4.42(23) -- 4.01 -- S. S. D. GASSTER ET AL. JOSA, 5(1988)593 | |||
| 6698 | */ | |||
| 6699 | // Coefficients are from Liebe et al., AGARD CP-May93, Paper 3/1-10 | |||
| 6700 | // 0 1 2 3 4 5 6 | |||
| 6701 | // f0 b1 b2 b3 b4 b5 b6 | |||
| 6702 | // [MHz] [kHz/kPa] [1] [MHz/hPa] [1] [1] | |||
| 6703 | // air self air self | |||
| 6704 | const Numeric mpm02[35][7] = { | |||
| 6705 | { 22235.0800, 0.10947, 2.1678, 2.811, 4.80, 0.69, 0.61}, | |||
| 6706 | { 67803.9600, 0.00111, 8.7518, 2.858, 4.93, 0.69, 0.82}, | |||
| 6707 | { 119995.9400, 0.00072, 8.3688, 2.948, 4.78, 0.70, 0.79}, | |||
| 6708 | { 183310.1170, 2.30351, 0.6794, 3.050, 5.30, 0.76, 0.85}, | |||
| 6709 | { 321225.6400, 0.04646, 6.1792, 2.303, 4.69, 0.67, 0.54}, | |||
| 6710 | { 325152.9190, 1.53869, 1.5408, 2.783, 4.85, 0.68, 0.74}, | |||
| 6711 | { 336227.6200, 0.00099, 9.8233, 2.693, 4.74, 0.64, 0.61}, | |||
| 6712 | { 380197.3720, 11.9079, 1.0439, 2.873, 5.38, 0.72, 0.89}, | |||
| 6713 | { 390134.5080, 0.00437, 7.3408, 2.152, 4.81, 0.63, 0.55}, | |||
| 6714 | { 437346.6670, 0.06378, 5.0384, 1.845, 4.23, 0.60, 0.48}, | |||
| 6715 | { 439150.8120, 0.92144, 3.5853, 2.100, 4.29, 0.63, 0.62}, | |||
| 6716 | { 443018.2950, 0.19384, 5.0384, 1.860, 4.23, 0.60, 0.50}, | |||
| 6717 | { 448001.0750, 10.6190, 1.3952, 2.632, 4.84, 0.66, 0.67}, | |||
| 6718 | { 470888.9470, 0.33005, 3.5853, 2.152, 4.57, 0.66, 0.65}, | |||
| 6719 | { 474689.1270, 1.27660, 2.3674, 2.355, 4.65, 0.65, 0.64}, | |||
| 6720 | { 488491.1330, 0.25312, 2.8391, 2.602, 5.04, 0.69, 0.72}, | |||
| 6721 | { 503568.5320, 0.03746, 6.7158, 1.612, 3.98, 0.61, 0.43}, | |||
| 6722 | { 504482.6920, 0.01250, 6.7158, 1.612, 4.01, 0.61, 0.45}, | |||
| 6723 | { 547676.4400, 1.01467, 0.1427, 2.600, 4.50, 0.69, 1.00}, // * | |||
| 6724 | { 552020.9600, 0.18668, 0.1452, 2.600, 4.50, 0.69, 1.00}, // * | |||
| 6725 | { 556936.0020, 510.51086, 0.1405, 3.210, 4.11, 0.69, 1.00}, | |||
| 6726 | { 620700.8070, 5.10539, 2.3673, 2.438, 4.68, 0.71, 0.68}, | |||
| 6727 | { 645905.6200, 0.00667, 8.6065, 1.800, 4.00, 0.60, 0.43}, | |||
| 6728 | { 658006.5500, 0.27451, 7.7889, 3.210, 4.14, 0.69, 1.00}, | |||
| 6729 | { 752033.2270, 249.68466, 0.3625, 3.060, 4.09, 0.68, 0.84}, | |||
| 6730 | { 841051.1620, 0.01308, 8.1347, 1.590, 5.76, 0.33, 0.45}, | |||
| 6731 | { 859965.6490, 0.13326, 8.0114, 3.060, 4.09, 0.68, 0.84}, | |||
| 6732 | { 899302.1710, 0.05492, 7.8676, 2.985, 4.53, 0.68, 0.90}, | |||
| 6733 | { 902609.4360, 0.03854, 8.3823, 2.865, 5.10, 0.70, 0.95}, | |||
| 6734 | { 906206.1180, 0.18323, 5.0628, 2.408, 4.70, 0.70, 0.53}, | |||
| 6735 | { 916171.5820, 8.56444, 1.3943, 2.670, 4.78, 0.70, 0.78}, | |||
| 6736 | { 923113.1900, 0.00784, 10.2441, 2.900, 5.00, 0.66, 0.67}, | |||
| 6737 | { 970315.0220, 9.16280, 1.8673, 2.550, 4.94, 0.64, 0.67}, | |||
| 6738 | { 987926.7640, 138.28461, 0.2045, 2.985, 4.55, 0.68, 0.90}, | |||
| 6739 | //-------------------------------------------------------------------- | |||
| 6740 | { 1780.000000, 2230.00000, 0.952, 17.620, 30.50, 2.00, 5.00}}; // pseudo continuum line | |||
| 6741 | ||||
| 6742 | // --------- STANDARD MODEL PARAMETERS --------------------------------------------------- | |||
| 6743 | // standard values for the MPM93 model (J. Liebe and G. A. Hufford and M. G. Cotton, | |||
| 6744 | // "Propagation modeling of moist air and suspended water/ice | |||
| 6745 | // particles at frequencies below 1000 GHz", | |||
| 6746 | // AGARD 52nd Specialists Meeting of the Electromagnetic Wave | |||
| 6747 | // Propagation Panel, Palma de Mallorca, Spain, 1993, May 17-21) | |||
| 6748 | const Numeric CC_MPM02 = 1.00000; | |||
| 6749 | const Numeric CL_MPM02 = 1.00000; | |||
| 6750 | const Numeric CW_MPM02 = 1.00000; | |||
| 6751 | // --------------------------------------------------------------------------------------- | |||
| 6752 | ||||
| 6753 | ||||
| 6754 | // select the parameter set (!!model dominates values!!): | |||
| 6755 | Numeric CC, CL, CW; | |||
| 6756 | // number of lines of Liebe line catalog (0-33 lines, 34 cont. pseudo line) | |||
| 6757 | Index i_first = 0; | |||
| 6758 | Index i_last = 34; | |||
| 6759 | if ( model == "MPM02" ) | |||
| 6760 | { | |||
| 6761 | CC = CC_MPM02; | |||
| 6762 | CL = CL_MPM02; | |||
| 6763 | CW = CW_MPM02; | |||
| 6764 | i_first = 0; | |||
| 6765 | i_last = 34; | |||
| 6766 | } | |||
| 6767 | else if ( model == "MPM02Lines" ) | |||
| 6768 | { | |||
| 6769 | CC = 0.000; | |||
| 6770 | CL = CL_MPM02; | |||
| 6771 | CW = CW_MPM02; | |||
| 6772 | i_first = 0; | |||
| 6773 | i_last = 33; | |||
| 6774 | } | |||
| 6775 | else if ( model == "MPM02Continuum" ) | |||
| 6776 | { | |||
| 6777 | CC = CC_MPM02; | |||
| 6778 | CL = 0.000; | |||
| 6779 | CW = 0.000; | |||
| 6780 | i_first = 34; | |||
| 6781 | i_last = 34; | |||
| 6782 | } | |||
| 6783 | else if ( model == "user" ) | |||
| 6784 | { | |||
| 6785 | CC = CCin; | |||
| 6786 | CL = CLin; | |||
| 6787 | CW = CWin; | |||
| 6788 | i_first = 0; | |||
| 6789 | i_last = 34; | |||
| 6790 | ||||
| 6791 | } | |||
| 6792 | else | |||
| 6793 | { | |||
| 6794 | ostringstream os; | |||
| 6795 | os << "H2O-MPM02: ERROR! Wrong model values given.\n" | |||
| 6796 | << "Valid models are: 'MPM02', 'MPM02Lines', 'MPM02Continuum', and 'user'" << '\n'; | |||
| 6797 | throw runtime_error(os.str()); | |||
| 6798 | } | |||
| 6799 | out3 << "H2O-MPM02: (model=" << model << ") parameter values in use:\n" | |||
| 6800 | << " CC = " << CC << "\n" | |||
| 6801 | << " CL = " << CL << "\n" | |||
| 6802 | << " CW = " << CW << "\n"; | |||
| 6803 | ||||
| 6804 | ||||
| 6805 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 6806 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 6807 | ||||
| 6808 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 6809 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 6809 , "n_p==abs_t.nelem()") : (void)0); | |||
| 6810 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 6810 , "n_p==vmr.nelem()") : (void)0); | |||
| 6811 | ||||
| 6812 | // Check that dimensions of pxsec are consistent with n_f | |||
| 6813 | // and n_p. It should be [n_f,n_p]: | |||
| 6814 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 6814 , "n_f==pxsec.nrows()") : (void)0); | |||
| 6815 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 6815 , "n_p==pxsec.ncols()") : (void)0); | |||
| 6816 | ||||
| 6817 | // Loop pressure/temperature (pressure in hPa therefore the factor 0.01) | |||
| 6818 | for ( Index i=0; i<n_p; ++i ) | |||
| 6819 | { | |||
| 6820 | // here the total pressure is not multiplied by the H2O vmr for the | |||
| 6821 | // P_H2O calculation because we calculate pxsec and not abs: abs = vmr * pxsec | |||
| 6822 | Numeric pwv_dummy = Pa_to_hPa * abs_p[i]; | |||
| 6823 | // relative inverse temperature [1] | |||
| 6824 | Numeric theta = (300.0 / abs_t[i]); | |||
| 6825 | // H2O partial pressure [hPa] | |||
| 6826 | Numeric pwv = Pa_to_hPa * abs_p[i] * vmr[i]; | |||
| 6827 | // dry air partial pressure [hPa] | |||
| 6828 | Numeric pda = (Pa_to_hPa * abs_p[i]) - pwv; | |||
| 6829 | // Loop over MPM02 spectral lines: | |||
| 6830 | ||||
| 6831 | // Loop over input frequency | |||
| 6832 | for ( Index s=0; s<n_f; ++s ) | |||
| 6833 | { | |||
| 6834 | // input frequency in [GHz] | |||
| 6835 | Numeric ff = f_grid[s] * Hz_to_GHz; | |||
| 6836 | ||||
| 6837 | for ( Index l = i_first; l <= i_last; ++l ) | |||
| 6838 | { | |||
| 6839 | // line strength [ppm]. The missing vmr of H2O will be multiplied | |||
| 6840 | // at the stage of absorption calculation: abs / vmr * pxsec. | |||
| 6841 | Numeric strength = 0.00; | |||
| 6842 | Numeric gam = 0.00; | |||
| 6843 | if ( (l >= 0) && (l <= 33) ) // ---- just the lines ------------------ | |||
| 6844 | { | |||
| 6845 | strength = CL * pwv_dummy * mpm02[l][1] * | |||
| 6846 | pow(theta, (Numeric)3.5) * exp(mpm02[l][2]*(1.0-theta)); | |||
| 6847 | // line broadening parameter [GHz] | |||
| 6848 | gam = CW * mpm02[l][3] * 0.001 * | |||
| 6849 | ( (mpm02[l][4] * pwv * pow(theta, mpm02[l][6])) + | |||
| 6850 | ( pda * pow(theta, mpm02[l][5])) ); | |||
| 6851 | } | |||
| 6852 | else if ( l == 34 ) // ----- just the continuum pseudo-line ---------- | |||
| 6853 | { | |||
| 6854 | strength = CC * pwv_dummy * mpm02[l][1] * | |||
| 6855 | pow(theta, (Numeric)3.5) * exp(mpm02[l][2]*(1.0-theta)); | |||
| 6856 | // line broadening parameter [GHz] | |||
| 6857 | gam = mpm02[l][3] * 0.001 * | |||
| 6858 | ( (mpm02[l][4] * pwv * pow(theta, mpm02[l][6])) + | |||
| 6859 | ( pda * pow(theta, mpm02[l][5])) ); | |||
| 6860 | } | |||
| 6861 | else // ----- if something strange happens --------------------------- | |||
| 6862 | { | |||
| 6863 | ostringstream os; | |||
| 6864 | os << "H2O-MPM02: wrong line number detected l=" << l << " (0-34)\n"; | |||
| 6865 | throw runtime_error(os.str()); | |||
| 6866 | return; | |||
| 6867 | } // --------------------------------------------------------------- | |||
| 6868 | // Doppler line width [GHz] | |||
| 6869 | // Numeric gamd = 1.46e-6 * mpm02[l][0] / sqrt(theta); | |||
| 6870 | // effective line width [GHz] | |||
| 6871 | //gam = 0.535 * gam + sqrt(0.217*gam*gam + gamd*gamd); | |||
| 6872 | // absorption [dB/km] like in the original MPM02 | |||
| 6873 | Numeric Npp = strength * MPMLineShapeFunction(gam, mpm02[l][0], ff); | |||
| 6874 | // pxsec = abs/vmr [1/m] but MPM89 is in [dB/km] --> conversion necessary | |||
| 6875 | pxsec(s,i) += dB_km_to_1_m * 0.1820 * ff * Npp; | |||
| 6876 | } | |||
| 6877 | } | |||
| 6878 | } | |||
| 6879 | return; | |||
| 6880 | } | |||
| 6881 | // | |||
| 6882 | // | |||
| 6883 | // ################################################################################# | |||
| 6884 | //! MPM93H2OAbsModel | |||
| 6885 | /*! | |||
| 6886 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 6887 | H2O (lines+continuum) according to MPM93 [1/m] | |||
| 6888 | \param CCin scaling factor for the H2O-continuum [1] | |||
| 6889 | \param CLin scaling factor for the line strengths [1] | |||
| 6890 | \param CWin scaling factor for the line widths [1] | |||
| 6891 | \param model allows user defined input parameter set | |||
| 6892 | (CCin, CLin, and CWin)<br> or choice of | |||
| 6893 | pre-defined parameters of specific models (see note below). | |||
| 6894 | \param f_grid predefined frequency grid [Hz] | |||
| 6895 | \param abs_p predefined pressure grid [Pa] | |||
| 6896 | \param abs_t predefined temperature grid [K] | |||
| 6897 | \param vmr H2O volume mixing ratio [1] | |||
| 6898 | ||||
| 6899 | \note Except for model 'user' the input parameters CCin, CLin, and CWin | |||
| 6900 | are neglected (model dominates over parameters).<br> | |||
| 6901 | Allowed models: 'MPM93', 'MPM93Lines', 'MPM93Continuum', | |||
| 6902 | and 'user'. See the user guide for detailed explanations. | |||
| 6903 | ||||
| 6904 | \remark Reference: H. J. Liebe and G. A. Hufford and M. G. Cotton,<br> | |||
| 6905 | <i>Propagation modeling of moist air and suspended water/ice | |||
| 6906 | particles at frequencies below 1000 GHz</i>,<br> | |||
| 6907 | AGARD 52nd Specialists Meeting of the Electromagnetic Wave | |||
| 6908 | Propagation Panel,<br> Palma de Mallorca, Spain, 1993, May 17-21 | |||
| 6909 | ||||
| 6910 | \attention The H2O lines at 547.676440 GHz and 552.020960 GHz are isotopologue lines:<br> | |||
| 6911 | 547 GHz is from the isotopologue 1-8-1 (HITRAN code 181, JPL code 20003) with an | |||
| 6912 | isotopologue ratio of 0.00199983 and <br> | |||
| 6913 | 552 GHz is from the isotopologue 1-7-1 (HITRAN code 171, JPL code 19003) with an | |||
| 6914 | isotopologue ratio of 0.00037200.<br> | |||
| 6915 | The original source code of MPM93 has these isotopologue ratios not included | |||
| 6916 | in the line strength parameter b1, which is an error.<br> | |||
| 6917 | In the arts implementation the line strength parameter b1 of these two lines | |||
| 6918 | is multiplied with the appropriate isotopologue ratio. | |||
| 6919 | ||||
| 6920 | \author Thomas Kuhn | |||
| 6921 | \date 2001-11-05 | |||
| 6922 | */ | |||
| 6923 | ||||
| 6924 | void MPM93H2OAbsModel (MatrixView pxsec, | |||
| 6925 | const Numeric CCin, // continuum scale factor | |||
| 6926 | const Numeric CLin, // line strength scale factor | |||
| 6927 | const Numeric CWin, // line broadening scale factor | |||
| 6928 | const String& model, | |||
| 6929 | ConstVectorView f_grid, | |||
| 6930 | ConstVectorView abs_p, | |||
| 6931 | ConstVectorView abs_t, | |||
| 6932 | ConstVectorView vmr, | |||
| 6933 | const Verbosity& verbosity) | |||
| 6934 | { | |||
| 6935 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 6936 | ||||
| 6937 | // | |||
| 6938 | // Coefficients are from Liebe et al., AGARD CP-May93, Paper 3/1-10 | |||
| 6939 | // 0 1 2 3 4 5 6 | |||
| 6940 | // f0 b1 b2 b3 b4 b5 b6 | |||
| 6941 | // [GHz] [kHz/hPa] [1] [MHz/hPa] [1] [1] [1] | |||
| 6942 | const Numeric mpm93[35][7] = { | |||
| 6943 | { 22.235080, 0.01130, 2.143, 2.811, 4.80, 0.69, 1.00}, | |||
| 6944 | { 67.803960, 0.00012, 8.735, 2.858, 4.93, 0.69, 0.82}, | |||
| 6945 | { 119.995940, 0.00008, 8.356, 2.948, 4.78, 0.70, 0.79}, | |||
| 6946 | { 183.310091, 0.24200, 0.668, 3.050, 5.30, 0.64, 0.85}, | |||
| 6947 | { 321.225644, 0.00483, 6.181, 2.303, 4.69, 0.67, 0.54}, | |||
| 6948 | { 325.152919, 0.14990, 1.540, 2.783, 4.85, 0.68, 0.74}, | |||
| 6949 | { 336.222601, 0.00011, 9.829, 2.693, 4.74, 0.69, 0.61}, | |||
| 6950 | { 380.197372, 1.15200, 1.048, 2.873, 5.38, 0.54, 0.89}, | |||
| 6951 | { 390.134508, 0.00046, 7.350, 2.152, 4.81, 0.63, 0.55}, | |||
| 6952 | { 437.346667, 0.00650, 5.050, 1.845, 4.23, 0.60, 0.48}, | |||
| 6953 | { 439.150812, 0.09218, 3.596, 2.100, 4.29, 0.63, 0.52}, | |||
| 6954 | { 443.018295, 0.01976, 5.050, 1.860, 4.23, 0.60, 0.50}, | |||
| 6955 | { 448.001075, 1.03200, 1.405, 2.632, 4.84, 0.66, 0.67}, | |||
| 6956 | { 470.888947, 0.03297, 3.599, 2.152, 4.57, 0.66, 0.65}, | |||
| 6957 | { 474.689127, 0.12620, 2.381, 2.355, 4.65, 0.65, 0.64}, | |||
| 6958 | { 488.491133, 0.02520, 2.853, 2.602, 5.04, 0.69, 0.72}, | |||
| 6959 | { 503.568532, 0.00390, 6.733, 1.612, 3.98, 0.61, 0.43}, | |||
| 6960 | { 504.482692, 0.00130, 6.733, 1.612, 4.01, 0.61, 0.45}, | |||
| 6961 | // { 547.676440, 0.97010, 0.114, 2.600, 4.50, 0.70, 1.00}, | |||
| 6962 | // { 552.020960, 1.47700, 0.114, 2.600, 4.50, 0.70, 1.00}, | |||
| 6963 | { 547.676440, 0.97010*0.00199983, 0.114, 2.600, 4.50, 0.70, 1.00}, // isotopologue ratio multiplied | |||
| 6964 | { 552.020960, 1.47700*0.00037200, 0.114, 2.600, 4.50, 0.70, 1.00}, // isotopologue ratio multiplied | |||
| 6965 | { 556.936002, 48.74000, 0.159, 3.210, 4.11, 0.69, 1.00}, | |||
| 6966 | { 620.700807, 0.50120, 2.200, 2.438, 4.68, 0.71, 0.68}, | |||
| 6967 | { 645.866155, 0.00713, 8.580, 1.800, 4.00, 0.60, 0.50}, // ?? JPL tag 18003 (H2O) f_o = 645.7660100GHz | |||
| 6968 | { 658.005280, 0.03022, 7.820, 3.210, 4.14, 0.69, 1.00}, | |||
| 6969 | { 752.033227, 23.96000, 0.396, 3.060, 4.09, 0.68, 0.84}, | |||
| 6970 | { 841.053973, 0.00140, 8.180, 1.590, 5.76, 0.33, 0.45}, | |||
| 6971 | { 859.962313, 0.01472, 7.989, 3.060, 4.09, 0.68, 0.84}, | |||
| 6972 | { 899.306675, 0.00605, 7.917, 2.985, 4.53, 0.68, 0.90}, | |||
| 6973 | { 902.616173, 0.00426, 8.432, 2.865, 5.10, 0.70, 0.95}, | |||
| 6974 | { 906.207325, 0.01876, 5.111, 2.408, 4.70, 0.70, 0.53}, | |||
| 6975 | { 916.171582, 0.83400, 1.442, 2.670, 4.78, 0.70, 0.78}, | |||
| 6976 | { 923.118427, 0.00869, 10.220, 2.900, 5.00, 0.70, 0.80}, | |||
| 6977 | { 970.315022, 0.89720, 1.920, 2.550, 4.94, 0.64, 0.67}, | |||
| 6978 | { 987.926764, 13.21000, 0.258, 2.985, 4.55, 0.68, 0.90}, | |||
| 6979 | //-------------------------------------------------------------------- | |||
| 6980 | { 1780.000000, 2230.00000, 0.952, 17.620, 30.50, 2.00, 5.00}}; // pseudo continuum line | |||
| 6981 | ||||
| 6982 | // --------- STANDARD MODEL PARAMETERS --------------------------------------------------- | |||
| 6983 | // standard values for the MPM93 model (J. Liebe and G. A. Hufford and M. G. Cotton, | |||
| 6984 | // "Propagation modeling of moist air and suspended water/ice | |||
| 6985 | // particles at frequencies below 1000 GHz", | |||
| 6986 | // AGARD 52nd Specialists Meeting of the Electromagnetic Wave | |||
| 6987 | // Propagation Panel, Palma de Mallorca, Spain, 1993, May 17-21) | |||
| 6988 | const Numeric CC_MPM93 = 1.00000; | |||
| 6989 | const Numeric CL_MPM93 = 1.00000; | |||
| 6990 | const Numeric CW_MPM93 = 1.00000; | |||
| 6991 | // --------------------------------------------------------------------------------------- | |||
| 6992 | ||||
| 6993 | ||||
| 6994 | // select the parameter set (!!model dominates values!!): | |||
| 6995 | Numeric CC, CL, CW; | |||
| 6996 | // number of lines of Liebe line catalog (0-33 lines, 34 cont. pseudo line) | |||
| 6997 | Index i_first = 0; | |||
| 6998 | Index i_last = 34; | |||
| 6999 | if ( model == "MPM93" ) | |||
| 7000 | { | |||
| 7001 | CC = CC_MPM93; | |||
| 7002 | CL = CL_MPM93; | |||
| 7003 | CW = CW_MPM93; | |||
| 7004 | i_first = 0; | |||
| 7005 | i_last = 34; | |||
| 7006 | } | |||
| 7007 | else if ( model == "MPM93Lines" ) | |||
| 7008 | { | |||
| 7009 | CC = 0.000; | |||
| 7010 | CL = CL_MPM93; | |||
| 7011 | CW = CW_MPM93; | |||
| 7012 | i_first = 0; | |||
| 7013 | i_last = 33; | |||
| 7014 | } | |||
| 7015 | else if ( model == "MPM93Continuum" ) | |||
| 7016 | { | |||
| 7017 | CC = CC_MPM93; | |||
| 7018 | CL = 0.000; | |||
| 7019 | CW = 0.000; | |||
| 7020 | i_first = 34; | |||
| 7021 | i_last = 34; | |||
| 7022 | } | |||
| 7023 | else if ( model == "user" ) | |||
| 7024 | { | |||
| 7025 | CC = CCin; | |||
| 7026 | CL = CLin; | |||
| 7027 | CW = CWin; | |||
| 7028 | i_first = 0; | |||
| 7029 | i_last = 34; | |||
| 7030 | ||||
| 7031 | } | |||
| 7032 | else | |||
| 7033 | { | |||
| 7034 | ostringstream os; | |||
| 7035 | os << "H2O-MPM93: ERROR! Wrong model values given.\n" | |||
| 7036 | << "Valid models are: 'MPM93', 'MPM93Lines', 'MPM93Continuum', and 'user'" << '\n'; | |||
| 7037 | throw runtime_error(os.str()); | |||
| 7038 | } | |||
| 7039 | out3 << "H2O-MPM93: (model=" << model << ") parameter values in use:\n" | |||
| 7040 | << " CC = " << CC << "\n" | |||
| 7041 | << " CL = " << CL << "\n" | |||
| 7042 | << " CW = " << CW << "\n"; | |||
| 7043 | ||||
| 7044 | ||||
| 7045 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 7046 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 7047 | ||||
| 7048 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 7049 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 7049 , "n_p==abs_t.nelem()") : (void)0); | |||
| 7050 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 7050 , "n_p==vmr.nelem()") : (void)0); | |||
| 7051 | ||||
| 7052 | // Check that dimensions of pxsec are consistent with n_f | |||
| 7053 | // and n_p. It should be [n_f,n_p]: | |||
| 7054 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 7054 , "n_f==pxsec.nrows()") : (void)0); | |||
| 7055 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 7055 , "n_p==pxsec.ncols()") : (void)0); | |||
| 7056 | ||||
| 7057 | // Loop pressure/temperature (pressure in hPa therefore the factor 0.01) | |||
| 7058 | for ( Index i=0; i<n_p; ++i ) | |||
| 7059 | { | |||
| 7060 | // here the total pressure is not multiplied by the H2O vmr for the | |||
| 7061 | // P_H2O calculation because we calculate pxsec and not abs: abs = vmr * pxsec | |||
| 7062 | Numeric pwv_dummy = Pa_to_hPa * abs_p[i]; | |||
| 7063 | // relative inverse temperature [1] | |||
| 7064 | Numeric theta = (300.0 / abs_t[i]); | |||
| 7065 | // H2O partial pressure [hPa] | |||
| 7066 | Numeric pwv = Pa_to_hPa * abs_p[i] * vmr[i]; | |||
| 7067 | // dry air partial pressure [hPa] | |||
| 7068 | Numeric pda = (Pa_to_hPa * abs_p[i]) - pwv; | |||
| 7069 | // Loop over MPM93 spectral lines: | |||
| 7070 | ||||
| 7071 | // Loop over input frequency | |||
| 7072 | for ( Index s=0; s<n_f; ++s ) | |||
| 7073 | { | |||
| 7074 | // input frequency in [GHz] | |||
| 7075 | Numeric ff = f_grid[s] * Hz_to_GHz; | |||
| 7076 | ||||
| 7077 | for ( Index l = i_first; l <= i_last; ++l ) | |||
| 7078 | { | |||
| 7079 | // line strength [ppm]. The missing vmr of H2O will be multiplied | |||
| 7080 | // at the stage of absorption calculation: abs / vmr * pxsec. | |||
| 7081 | Numeric strength = 0.00; | |||
| 7082 | Numeric gam = 0.00; | |||
| 7083 | if ( (l >= 0) && (l <= 33) ) // ---- just the lines ------------------ | |||
| 7084 | { | |||
| 7085 | strength = CL * pwv_dummy * mpm93[l][1] | |||
| 7086 | * pow(theta, (Numeric)3.5) * exp(mpm93[l][2]*(1.0-theta)); | |||
| 7087 | // line broadening parameter [GHz] | |||
| 7088 | gam = CW * mpm93[l][3] * 0.001 * | |||
| 7089 | ( (mpm93[l][4] * pwv * pow(theta, mpm93[l][6])) + | |||
| 7090 | ( pda * pow(theta, mpm93[l][5])) ); | |||
| 7091 | } | |||
| 7092 | else if ( l == 34 ) // ----- just the continuum pseudo-line ---------- | |||
| 7093 | { | |||
| 7094 | strength = CC * pwv_dummy * mpm93[l][1] | |||
| 7095 | * pow(theta, (Numeric)3.5) * exp(mpm93[l][2]*(1.0-theta)); | |||
| 7096 | // line broadening parameter [GHz] | |||
| 7097 | gam = mpm93[l][3] * 0.001 * | |||
| 7098 | ( (mpm93[l][4] * pwv * pow(theta, mpm93[l][6])) + | |||
| 7099 | ( pda * pow(theta, mpm93[l][5])) ); | |||
| 7100 | } | |||
| 7101 | else // ----- if something strange happens --------------------------- | |||
| 7102 | { | |||
| 7103 | ostringstream os; | |||
| 7104 | os << "H2O-MPM93: wrong line number detected l=" << l << " (0-34)\n"; | |||
| 7105 | throw runtime_error(os.str()); | |||
| 7106 | return; | |||
| 7107 | } // --------------------------------------------------------------- | |||
| 7108 | // Doppler line width [GHz] | |||
| 7109 | // Numeric gamd = 1.46e-6 * mpm93[l][0] / sqrt(theta); | |||
| 7110 | // effective line width [GHz] | |||
| 7111 | //gam = 0.535 * gam + sqrt(0.217*gam*gam + gamd*gamd); | |||
| 7112 | // absorption [dB/km] like in the original MPM93 | |||
| 7113 | Numeric Npp = strength * MPMLineShapeFunction(gam, mpm93[l][0], ff); | |||
| 7114 | // pxsec = abs/vmr [1/m] but MPM89 is in [dB/km] --> conversion necessary | |||
| 7115 | pxsec(s,i) += dB_km_to_1_m * 0.1820 * ff * Npp; | |||
| 7116 | } | |||
| 7117 | } | |||
| 7118 | } | |||
| 7119 | return; | |||
| 7120 | } | |||
| 7121 | // | |||
| 7122 | // ################################################################################# | |||
| 7123 | //! PWR98H2OAbsModel | |||
| 7124 | /*! | |||
| 7125 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 7126 | H2O (lines+continuum) according to P. W. Rosenkranz, 1998 [1/m] | |||
| 7127 | \param CCin scaling factor for the H2O-continuum [1] | |||
| 7128 | \param CLin scaling factor for the line strengths [1] | |||
| 7129 | \param CWin scaling factor for the line widths [1] | |||
| 7130 | \param model allows user defined input parameter set | |||
| 7131 | (CCin, CLin, and CWin)<br> or choice of | |||
| 7132 | pre-defined parameters of specific models (see note below). | |||
| 7133 | \param f_grid predefined frequency grid [Hz] | |||
| 7134 | \param abs_p predefined pressure grid [Pa] | |||
| 7135 | \param abs_t predefined temperature grid [K] | |||
| 7136 | \param vmr H2O volume mixing ratio [1] | |||
| 7137 | ||||
| 7138 | \note Except for model 'user' the input parameters CCin, CLin, and CWin | |||
| 7139 | are neglected (model dominates over parameters).<br> | |||
| 7140 | Allowed models: 'Rosenkranz', 'RosenkranzLines', 'RosenkranzContinuum', | |||
| 7141 | and 'user'. See the user guide for detailed explanations. | |||
| 7142 | ||||
| 7143 | \remark Reference: P. W. Rosenkranz., Radio Science, 33(4), 919, 1998 and | |||
| 7144 | Radio Science, Vol. 34(4), 1025, 1999. | |||
| 7145 | ||||
| 7146 | \author Thomas Kuhn | |||
| 7147 | \date 2001-11-05 | |||
| 7148 | */ | |||
| 7149 | ||||
| 7150 | void PWR98H2OAbsModel (MatrixView pxsec, | |||
| 7151 | const Numeric CCin, // continuum scale factor | |||
| 7152 | const Numeric CLin, // line strength scale factor | |||
| 7153 | const Numeric CWin, // line broadening scale factor | |||
| 7154 | const String& model, | |||
| 7155 | ConstVectorView f_grid, | |||
| 7156 | ConstVectorView abs_p, | |||
| 7157 | ConstVectorView abs_t, | |||
| 7158 | ConstVectorView vmr, | |||
| 7159 | const Verbosity& verbosity) | |||
| 7160 | { | |||
| 7161 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 7162 | ||||
| 7163 | // REFERENCES: | |||
| 7164 | // LINE INTENSITIES FROM HITRAN92 (SELECTION THRESHOLD= | |||
| 7165 | // HALF OF CONTINUUM ABSORPTION AT 1000 MB). | |||
| 7166 | // WIDTHS MEASURED AT 22,183,380 GHZ, OTHERS CALCULATED: | |||
| 7167 | // H.J.LIEBE AND T.A.DILLON, J.CHEM.PHYS. V.50, PP.727-732 (1969) & | |||
| 7168 | // H.J.LIEBE ET AL., JQSRT V.9, PP. 31-47 (1969) (22GHz); | |||
| 7169 | // A.BAUER ET AL., JQSRT V.37, PP.531-539 (1987) & | |||
| 7170 | // ASA WORKSHOP (SEPT. 1989) (380GHz); | |||
| 7171 | // AND A.BAUER ET AL., JQSRT V.41, PP.49-54 (1989) (OTHER LINES). | |||
| 7172 | // AIR-BROADENED CONTINUUM BASED ON LIEBE & LAYTON, NTIA | |||
| 7173 | // REPORT 87-224 (1987); SELF-BROADENED CONTINUUM BASED ON | |||
| 7174 | // LIEBE ET AL, AGARD CONF. PROC. 542 (MAY 1993), | |||
| 7175 | // BUT READJUSTED FOR LINE SHAPE OF | |||
| 7176 | // CLOUGH et al, ATMOS. RESEARCH V.23, PP.229-241 (1989). | |||
| 7177 | // | |||
| 7178 | // Coefficients are from P. W. Rosenkranz., Radio Science, 33(4), 919, 1998 | |||
| 7179 | // line frequencies [GHz] | |||
| 7180 | const Numeric PWRfl[15] = { 22.2350800, 183.3101170, 321.2256400, 325.1529190, 380.1973720, | |||
| 7181 | 439.1508120, 443.0182950, 448.0010750, 470.8889470, 474.6891270, | |||
| 7182 | 488.4911330, 556.9360020, 620.7008070, 752.0332270, 916.1715820 }; | |||
| 7183 | // line intensities at 300K [Hz * cm2] (see Janssen Appendix to Chap.2 for this) | |||
| 7184 | const Numeric PWRs1[15] = { 1.31e-14, 2.273e-12, 8.036e-14, 2.694e-12, 2.438e-11, | |||
| 7185 | 2.179e-12, 4.624e-13, 2.562e-11, 8.369e-13, 3.263e-12, | |||
| 7186 | 6.659e-13, 1.531e-9, 1.707e-11, 1.011e-9, 4.227e-11 }; | |||
| 7187 | // T coeff. of intensities [1] | |||
| 7188 | const Numeric PWRb2[15] = { 2.144, 0.668, 6.179, 1.541, 1.048, | |||
| 7189 | 3.595, 5.048, 1.405, 3.597, 2.379, | |||
| 7190 | 2.852, 0.159, 2.391, 0.396, 1.441 }; | |||
| 7191 | // air-broadened width parameters at 300K [GHz/hPa] | |||
| 7192 | const Numeric PWRw3[15] = { 0.00281, 0.00281, 0.00230, 0.00278, 0.00287, | |||
| 7193 | 0.00210, 0.00186, 0.00263, 0.00215, 0.00236, | |||
| 7194 | 0.00260, 0.00321, 0.00244, 0.00306, 0.00267 }; | |||
| 7195 | // T-exponent of air-broadening [1] | |||
| 7196 | const Numeric PWRx[15] = { 0.69, 0.64, 0.67, 0.68, 0.54, | |||
| 7197 | 0.63, 0.60, 0.66, 0.66, 0.65, | |||
| 7198 | 0.69, 0.69, 0.71, 0.68, 0.70 }; | |||
| 7199 | // self-broadened width parameters at 300K [GHz/hPa] | |||
| 7200 | const Numeric PWRws[15] = { 0.01349, 0.01491, 0.01080, 0.01350, 0.01541, | |||
| 7201 | 0.00900, 0.00788, 0.01275, 0.00983, 0.01095, | |||
| 7202 | 0.01313, 0.01320, 0.01140, 0.01253, 0.01275 }; | |||
| 7203 | ||||
| 7204 | // T-exponent of self-broadening [1] | |||
| 7205 | const Numeric PWRxs[15] = { 0.61, 0.85, 0.54, 0.74, 0.89, | |||
| 7206 | 0.52, 0.50, 0.67, 0.65, 0.64, | |||
| 7207 | 0.72, 1.00, 0.68, 0.84, 0.78 }; | |||
| 7208 | ||||
| 7209 | // --------- STANDARD MODEL PARAMETERS --------------------------------------------------- | |||
| 7210 | // standard values for the MPM87 model (P. W. Rosenkranz., Radio Science, 33(4), 919, 1998): | |||
| 7211 | const Numeric CC_PWR98 = 1.00000; | |||
| 7212 | const Numeric CL_PWR98 = 1.00000; | |||
| 7213 | const Numeric CW_PWR98 = 1.00000; | |||
| 7214 | // --------------------------------------------------------------------------------------- | |||
| 7215 | ||||
| 7216 | ||||
| 7217 | // select the parameter set (!!model dominates values!!): | |||
| 7218 | Numeric CC, CL, CW; | |||
| 7219 | if ( model == "Rosenkranz" ) | |||
| 7220 | { | |||
| 7221 | CC = CC_PWR98; | |||
| 7222 | CL = CL_PWR98; | |||
| 7223 | CW = CW_PWR98; | |||
| 7224 | } | |||
| 7225 | else if ( model == "RosenkranzLines" ) | |||
| 7226 | { | |||
| 7227 | CC = 0.000; | |||
| 7228 | CL = CL_PWR98; | |||
| 7229 | CW = CW_PWR98; | |||
| 7230 | } | |||
| 7231 | else if ( model == "RosenkranzContinuum" ) | |||
| 7232 | { | |||
| 7233 | CC = CC_PWR98; | |||
| 7234 | CL = 0.000; | |||
| 7235 | CW = 0.000; | |||
| 7236 | } | |||
| 7237 | else if ( model == "user" ) | |||
| 7238 | { | |||
| 7239 | CC = CCin; | |||
| 7240 | CL = CLin; | |||
| 7241 | CW = CWin; | |||
| 7242 | } | |||
| 7243 | else | |||
| 7244 | { | |||
| 7245 | ostringstream os; | |||
| 7246 | os << "H2O-PWR98: ERROR! Wrong model values given.\n" | |||
| 7247 | << "Valid models are: 'Rosenkranz', 'RosenkranzLines', 'RosenkranzContinuum', and 'user'" << '\n'; | |||
| 7248 | throw runtime_error(os.str()); | |||
| 7249 | } | |||
| 7250 | out3 << "H2O-PWR98: (model=" << model << ") parameter values in use:\n" | |||
| 7251 | << " CC = " << CC << "\n" | |||
| 7252 | << " CL = " << CL << "\n" | |||
| 7253 | << " CW = " << CW << "\n"; | |||
| 7254 | ||||
| 7255 | ||||
| 7256 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 7257 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 7258 | ||||
| 7259 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 7260 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 7260 , "n_p==abs_t.nelem()") : (void)0); | |||
| 7261 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 7261 , "n_p==vmr.nelem()") : (void)0); | |||
| 7262 | ||||
| 7263 | // Check that dimensions of pxsec are consistent with n_f | |||
| 7264 | // and n_p. It should be [n_f,n_p]: | |||
| 7265 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 7265 , "n_f==pxsec.nrows()") : (void)0); | |||
| 7266 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 7266 , "n_p==pxsec.ncols()") : (void)0); | |||
| 7267 | ||||
| 7268 | // Loop pressure/temperature: | |||
| 7269 | #pragma omp parallel for \ | |||
| 7270 | if (!arts_omp_in_parallel() \ | |||
| 7271 | && n_p >= arts_omp_get_max_threads()) | |||
| 7272 | for ( Index i=0; i<n_p; ++i ) | |||
| 7273 | { | |||
| 7274 | // here the total pressure is not multiplied by the H2O vmr for the | |||
| 7275 | // P_H2O calculation because we calculate pxsec and not abs: abs = vmr * pxsec | |||
| 7276 | Numeric pvap_dummy = Pa_to_hPa * abs_p[i]; | |||
| 7277 | // water vapor partial pressure [hPa] | |||
| 7278 | Numeric pvap = Pa_to_hPa * abs_p[i] * vmr[i]; | |||
| 7279 | // dry air partial pressure [hPa] | |||
| 7280 | Numeric pda = (Pa_to_hPa * abs_p[i]) - pvap; | |||
| 7281 | // Rosenkranz number density (Rosenkranz H2O mass density in [g/m³]) | |||
| 7282 | // [g/m³] = [g*K / Pa*m³] * [Pa/K] | |||
| 7283 | // rho = (M_H2O / R) * (P_H2O / T) | |||
| 7284 | // rho = 2.1667 * abs_p * vmr / abs_t | |||
| 7285 | // den = 3.335e16 * rho | |||
| 7286 | // FIXME Numeric den = 3.335e16 * (2.1667 * abs_p[i] * vmr[i] / abs_t[i]); | |||
| 7287 | Numeric den_dummy = 3.335e16 * (2.1667 * abs_p[i] / abs_t[i]); | |||
| 7288 | // inverse relative temperature [1] | |||
| 7289 | Numeric ti = (300.0 / abs_t[i]); | |||
| 7290 | Numeric ti2 = pow(ti, (Numeric)2.5); | |||
| 7291 | ||||
| 7292 | // continuum term [Np/km/GHz2] | |||
| 7293 | Numeric con = CC * pvap_dummy * pow(ti, (Numeric)3.0) * 1.000e-9 | |||
| 7294 | * ( (0.543 * pda) + (17.96 * pvap * pow(ti, (Numeric)4.5)) ); | |||
| 7295 | ||||
| 7296 | // Loop over input frequency | |||
| 7297 | for ( Index s=0; s<n_f; ++s ) | |||
| 7298 | { | |||
| 7299 | // input frequency in [GHz] | |||
| 7300 | Numeric ff = f_grid[s] * Hz_to_GHz; | |||
| 7301 | // line contribution at position f | |||
| 7302 | Numeric sum = 0.000; | |||
| 7303 | ||||
| 7304 | // Loop over spectral lines | |||
| 7305 | for (Index l = 0; l < 15; l++) | |||
| 7306 | { | |||
| 7307 | Numeric width = ( CW * PWRw3[l] * pda * pow(ti, PWRx[l]) ) + | |||
| 7308 | ( PWRws[l] * pvap * pow(ti, PWRxs[l])); | |||
| 7309 | // Numeric width = CW * ( PWRw3[l] * pda * pow(ti, PWRx[l]) + | |||
| 7310 | // PWRws[l] * pvap * pow(ti, PWRxs[l]) ); | |||
| 7311 | Numeric wsq = width * width; | |||
| 7312 | Numeric strength = CL * PWRs1[l] * ti2 * exp(PWRb2[l]*(1.0 - ti)); | |||
| 7313 | // frequency differences | |||
| 7314 | Numeric df0 = ff - PWRfl[l]; | |||
| 7315 | Numeric df1 = ff + PWRfl[l]; | |||
| 7316 | // use Clough's definition of local line contribution | |||
| 7317 | Numeric base = width / (wsq + 562500.000); | |||
| 7318 | // positive and negative resonances | |||
| 7319 | Numeric res = 0.000; | |||
| 7320 | if (fabs(df0) < 750.0) res += width / (df0*df0 + wsq) - base; | |||
| 7321 | if (fabs(df1) < 750.0) res += width / (df1*df1 + wsq) - base; | |||
| 7322 | sum += strength * res * pow( (ff/PWRfl[l]), | |||
| 7323 | (Numeric)2.0 ); | |||
| 7324 | } | |||
| 7325 | // line term [Np/km] | |||
| 7326 | Numeric absl = 0.3183e-4 * den_dummy * sum; | |||
| 7327 | // pxsec = abs/vmr [1/m] (Rosenkranz model in [Np/km]) | |||
| 7328 | // 4.1907e-5 = 0.230259 * 0.1820 * 1.0e-3 (1/(10*log(e)) = 0.230259) | |||
| 7329 | pxsec(s,i) += 1.000e-3 * ( absl + (con * ff * ff) ); | |||
| 7330 | } | |||
| 7331 | } | |||
| 7332 | return; | |||
| 7333 | } | |||
| 7334 | // | |||
| 7335 | // ################################################################################# | |||
| 7336 | // | |||
| 7337 | //! CP98H2OAbsModel | |||
| 7338 | /*! | |||
| 7339 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 7340 | H2O (lines+continuum) according to Cruz-Pol 1998 [1/m] | |||
| 7341 | \param CCin scaling factor for the H2O-continuum [1] | |||
| 7342 | \param CLin scaling factor for the line strengths [1] | |||
| 7343 | \param CWin scaling factor for the line widths [1] | |||
| 7344 | \param model allows user defined input parameter set | |||
| 7345 | (CCin, CLin, and CWin)<br> or choice of | |||
| 7346 | pre-defined parameters of specific models (see note below). | |||
| 7347 | \param f_grid predefined frequency grid [Hz] | |||
| 7348 | \param abs_p predefined pressure grid [Pa] | |||
| 7349 | \param abs_t predefined temperature grid [K] | |||
| 7350 | \param vmr H2O volume mixing ratio [1] | |||
| 7351 | ||||
| 7352 | \note Except for model 'user' the input parameters CCin, CLin, and CWin | |||
| 7353 | are neglected (model dominates over parameters).<br> | |||
| 7354 | Allowed models: 'CruzPol', 'CruzPolLines', 'CruzPolContinuum', | |||
| 7355 | and 'user'. See the user guide for detailed explanations. | |||
| 7356 | ||||
| 7357 | \remark Reference: S. L. Cruz-Pol et al., Radio Science, 33(5), 1319, 1998. | |||
| 7358 | ||||
| 7359 | \author Thomas Kuhn | |||
| 7360 | \date 2001-11-05 | |||
| 7361 | */ | |||
| 7362 | ||||
| 7363 | void CP98H2OAbsModel (MatrixView pxsec, | |||
| 7364 | const Numeric CCin, // continuum scale factor | |||
| 7365 | const Numeric CLin, // line strength scale factor | |||
| 7366 | const Numeric CWin, // line broadening scale factor | |||
| 7367 | const String& model, | |||
| 7368 | ConstVectorView f_grid, | |||
| 7369 | ConstVectorView abs_p, | |||
| 7370 | ConstVectorView abs_t, | |||
| 7371 | ConstVectorView vmr, | |||
| 7372 | const Verbosity& verbosity) | |||
| 7373 | { | |||
| 7374 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 7375 | ||||
| 7376 | // --------- STANDARD MODEL PARAMETERS --------------------------------------------------- | |||
| 7377 | // standard values for the CP98 model (S. L. Cruz-Pol et al., Radio Science, 33(5), 1319, 1998): | |||
| 7378 | const Numeric CC_CP98 = 1.2369; // +/- 0.155 !LARGE! | |||
| 7379 | const Numeric CL_CP98 = 1.0639; // +/- 0.016 | |||
| 7380 | const Numeric CW_CP98 = 1.0658; // +/- 0.0096 | |||
| 7381 | // --------------------------------------------------------------------------------------- | |||
| 7382 | ||||
| 7383 | // select the parameter set (!!model dominates values!!): | |||
| 7384 | Numeric CC, CL, CW; | |||
| 7385 | if ( model == "CruzPol" ) | |||
| 7386 | { | |||
| 7387 | CC = CC_CP98; | |||
| 7388 | CL = CL_CP98; | |||
| 7389 | CW = CW_CP98; | |||
| 7390 | } | |||
| 7391 | else if ( model == "CruzPolLine" ) | |||
| 7392 | { | |||
| 7393 | CC = 0.000; | |||
| 7394 | CL = CL_CP98; | |||
| 7395 | CW = CW_CP98; | |||
| 7396 | } | |||
| 7397 | else if ( model == "CruzPolContinuum" ) | |||
| 7398 | { | |||
| 7399 | CC = CC_CP98; | |||
| 7400 | CL = 0.000; | |||
| 7401 | CW = 0.000; | |||
| 7402 | } | |||
| 7403 | else if ( model == "user" ) | |||
| 7404 | { | |||
| 7405 | CC = CCin; | |||
| 7406 | CL = CLin; | |||
| 7407 | CW = CWin; | |||
| 7408 | } | |||
| 7409 | else | |||
| 7410 | { | |||
| 7411 | ostringstream os; | |||
| 7412 | os << "H2O-CP98: ERROR! Wrong model values given.\n" | |||
| 7413 | << "Valid models are: 'CruzPol', 'CruzPolLine', 'CruzPolContinuum', and 'user'" << "\n"; | |||
| 7414 | throw runtime_error(os.str()); | |||
| 7415 | } | |||
| 7416 | out3 << "H2O-CP98: (model=" << model << ") parameter values in use:\n" | |||
| 7417 | << " CC = " << CC << "\n" | |||
| 7418 | << " CL = " << CL << "\n" | |||
| 7419 | << " CW = " << CW << "\n"; | |||
| 7420 | ||||
| 7421 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 7422 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 7423 | ||||
| 7424 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 7425 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 7425 , "n_p==abs_t.nelem()") : (void)0); | |||
| 7426 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 7426 , "n_p==vmr.nelem()") : (void)0); | |||
| 7427 | ||||
| 7428 | // Check that dimensions of pxsec are consistent with n_f | |||
| 7429 | // and n_p. It should be [n_f,n_p]: | |||
| 7430 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 7430 , "n_f==pxsec.nrows()") : (void)0); | |||
| 7431 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 7431 , "n_p==pxsec.ncols()") : (void)0); | |||
| 7432 | ||||
| 7433 | // Loop pressure/temperature (pressure in [hPa] therefore the factor 0.01) | |||
| 7434 | for ( Index i=0; i<n_p; ++i ) | |||
| 7435 | { | |||
| 7436 | // calculate pxsec only if VMR(H2O) > VMRCalcLimit | |||
| 7437 | if (vmr[i] > VMRCalcLimit) | |||
| 7438 | { | |||
| 7439 | // relative inverse temperature [1] | |||
| 7440 | Numeric theta = (300.0 / abs_t[i]); | |||
| 7441 | // H2O partial pressure [hPa] | |||
| 7442 | Numeric pwv = Pa_to_hPa * abs_p[i] * vmr[i]; | |||
| 7443 | // dry air partial pressure [hPa] | |||
| 7444 | Numeric pda = (Pa_to_hPa * abs_p[i]) - pwv; | |||
| 7445 | // line strength | |||
| 7446 | Numeric TL = CL * 0.0109 * pwv * pow(theta,(Numeric)3.5) | |||
| 7447 | * exp(2.143*(1.0-theta)); | |||
| 7448 | // line broadening parameter [GHz] | |||
| 7449 | Numeric gam = CW * 0.002784 * | |||
| 7450 | ( (pda * pow(theta,(Numeric)0.6)) | |||
| 7451 | + (4.80 * pwv * pow(theta,(Numeric)1.1)) ); | |||
| 7452 | // continuum term | |||
| 7453 | Numeric TC = CC * pwv * pow(theta, (Numeric)3.0) * 1.000e-7 | |||
| 7454 | * ( (0.113 * pda) + (3.57 * pwv * pow(theta,(Numeric)7.5)) ); | |||
| 7455 | ||||
| 7456 | // Loop over input frequency | |||
| 7457 | for ( Index s=0; s<n_f; ++s ) | |||
| 7458 | { | |||
| 7459 | // input frequency in [GHz] | |||
| 7460 | Numeric ff = f_grid[s] * Hz_to_GHz; | |||
| 7461 | Numeric TSf = MPMLineShapeFunction(gam, 22.235080, ff); | |||
| 7462 | // pxsec = abs/vmr [1/m] (Cruz-Pol model in [Np/km]) | |||
| 7463 | pxsec(s,i) += 4.1907e-5 * ff * ( (TL * TSf) + (ff * TC) ) / vmr[i]; | |||
| 7464 | } | |||
| 7465 | } | |||
| 7466 | } | |||
| 7467 | return; | |||
| 7468 | } | |||
| 7469 | // | |||
| 7470 | // ################################################################################# | |||
| 7471 | //! Standard_H2O_self_continuum | |||
| 7472 | /*! | |||
| 7473 | \param[out] pxsec cross section (absorption/volume mixing ratio) of the | |||
| 7474 | H2O-H2O continuum [1/m] | |||
| 7475 | \param Cin constant absorption strength [1/m / (Hz*Pa)²] | |||
| 7476 | \param xin temperature exponent of (300/T) [1] | |||
| 7477 | \param model allows user defined input parameter set | |||
| 7478 | (C and x)<br> or choice of | |||
| 7479 | pre-defined parameters of specific models (see note below). | |||
| 7480 | \param f_grid predefined frequency grid [Hz] | |||
| 7481 | \param abs_p predefined pressure grid [Pa] | |||
| 7482 | \param abs_t predefined temperature grid [K] | |||
| 7483 | \param vmr H2O volume mixing ratio [1] | |||
| 7484 | ||||
| 7485 | \note Except for model 'user' the input parameters C and x | |||
| 7486 | are neglected (model dominates over parameters).<br> | |||
| 7487 | Allowed models: 'Rosenkranz', 'CruzPol', 'MPM89', 'MPM87', and 'user'. | |||
| 7488 | See the user guide for detailed explanations. | |||
| 7489 | ||||
| 7490 | \remark Reference: P. W. Rosenkranz., Radio Science, 33(4), 919, 1998 and | |||
| 7491 | Radio Science, Vol. 34(4), 1025, 1999. | |||
| 7492 | \author Thomas Kuhn | |||
| 7493 | \date 2001-11-05 | |||
| 7494 | */ | |||
| 7495 | void Standard_H2O_self_continuum (MatrixView pxsec, | |||
| 7496 | const Numeric Cin, | |||
| 7497 | const Numeric xin, | |||
| 7498 | const String& model, | |||
| 7499 | ConstVectorView f_grid, | |||
| 7500 | ConstVectorView abs_p, | |||
| 7501 | ConstVectorView abs_t, | |||
| 7502 | ConstVectorView vmr, | |||
| 7503 | const Verbosity& verbosity) | |||
| 7504 | { | |||
| 7505 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 7506 | ||||
| 7507 | // --------- STANDARD MODEL PARAMETERS --------------------------------------------------- | |||
| 7508 | // standard values for the Rosenkranz model (Radio Science, 33(4), 919, 1998): | |||
| 7509 | const Numeric Cs_PWR = 1.796e-33; // [1/m / (Hz²*Pa²)] | |||
| 7510 | const Numeric xs_PWR = 4.5; // [1] | |||
| 7511 | // standard values for the Cruz-Pol model (Radio Science, 33(5), 1319, 1998): | |||
| 7512 | const Numeric Cs_CP = 1.851e-33; // [1/m / (Hz²*Pa²)] | |||
| 7513 | const Numeric xs_CP = 7.5; // [1] | |||
| 7514 | // standard values for the MPM89 model (Int. J. Inf. and Millim. Waves, 10(6), 1989, 631): | |||
| 7515 | const Numeric Cs_MPM89 = 1.500e-33; // [1/m / (Hz²*Pa²)] | |||
| 7516 | const Numeric xs_MPM89 = 7.5; // [1] | |||
| 7517 | // standard values for the MPM87 model (Radio Science, 20(5), 1985, 1069): | |||
| 7518 | const Numeric Cs_MPM87 = 1.500e-33; // [1/m / (Hz²*Pa²)] | |||
| 7519 | const Numeric xs_MPM87 = 7.5; // [1] | |||
| 7520 | // --------------------------------------------------------------------------------------- | |||
| 7521 | ||||
| 7522 | // select the parameter set (!!model goes for values!!): | |||
| 7523 | Numeric C, x; | |||
| 7524 | if ( model == "Rosenkranz" ) | |||
| 7525 | { | |||
| 7526 | C = Cs_PWR; | |||
| 7527 | x = xs_PWR; | |||
| 7528 | } | |||
| 7529 | else if ( model == "CruzPol" ) | |||
| 7530 | { | |||
| 7531 | C = Cs_CP; | |||
| 7532 | x = xs_CP; | |||
| 7533 | } | |||
| 7534 | else if ( model == "MPM89" ) | |||
| 7535 | { | |||
| 7536 | C = Cs_MPM89; | |||
| 7537 | x = xs_MPM89; | |||
| 7538 | } | |||
| 7539 | else if ( model == "MPM87" ) | |||
| 7540 | { | |||
| 7541 | C = Cs_MPM87; | |||
| 7542 | x = xs_MPM87; | |||
| 7543 | } | |||
| 7544 | else if ( model == "user" ) | |||
| 7545 | { | |||
| 7546 | C = Cin; | |||
| 7547 | x = xin; | |||
| 7548 | } | |||
| 7549 | else | |||
| 7550 | { | |||
| 7551 | ostringstream os; | |||
| 7552 | os << "H2O-SelfContStandardType: ERROR! Wrong model values given.\n" | |||
| 7553 | << "allowed models are: 'Rosenkranz', 'CruzPol', 'MPM89', 'MPM87', 'user'" << '\n'; | |||
| 7554 | throw runtime_error(os.str()); | |||
| 7555 | } | |||
| 7556 | out3 << "H2O-SelfContStandardType: (model=" << model << ") parameter values in use:\n" | |||
| 7557 | << " C_s = " << C << "\n" | |||
| 7558 | << " x_s = " << x << "\n"; | |||
| 7559 | ||||
| 7560 | ||||
| 7561 | ||||
| 7562 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 7563 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 7564 | ||||
| 7565 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 7566 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 7566 , "n_p==abs_t.nelem()") : (void)0); | |||
| 7567 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 7567 , "n_p==vmr.nelem()") : (void)0); | |||
| 7568 | ||||
| 7569 | // Check that dimensions of pxsec are consistent with n_f | |||
| 7570 | // and n_p. It should be [n_f,n_p]: | |||
| 7571 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 7571 , "n_f==pxsec.nrows()") : (void)0); | |||
| 7572 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 7572 , "n_p==pxsec.ncols()") : (void)0); | |||
| 7573 | ||||
| 7574 | // Loop over pressure/temperature grid: | |||
| 7575 | for ( Index i=0; i<n_p; ++i ) | |||
| 7576 | { | |||
| 7577 | // Dummy scalar holds everything except the quadratic frequency dependence. | |||
| 7578 | // The second vmr of H2O will be multiplied at the stage of absorption | |||
| 7579 | // calculation: abs = vmr * pxsec. | |||
| 7580 | Numeric dummy = | |||
| 7581 | C * pow( (Numeric)300./abs_t[i], x+(Numeric)3. ) | |||
| 7582 | * pow( abs_p[i], (Numeric)2. ) * vmr[i]; | |||
| 7583 | ||||
| 7584 | // Loop over frequency grid: | |||
| 7585 | for ( Index s=0; s<n_f; ++s ) | |||
| 7586 | { | |||
| 7587 | pxsec(s,i) += dummy * pow( f_grid[s], (Numeric)2. ); | |||
| 7588 | // cout << "pxsec(" << s << "," << i << "): " << pxsec(s,i) << "\n"; | |||
| 7589 | } | |||
| 7590 | } | |||
| 7591 | } | |||
| 7592 | // | |||
| 7593 | // ################################################################################# | |||
| 7594 | //! Standard_H2O_foreign_continuum | |||
| 7595 | /*! | |||
| 7596 | \param[out] pxsec cross section (absorption/volume mixing ratio) of the | |||
| 7597 | H2O-dry air continuum [1/m] | |||
| 7598 | \param Cin constant absorption strength [1/m / (Hz*Pa)²] | |||
| 7599 | \param xin temperature exponent [1] | |||
| 7600 | \param model allows user defined input parameter set | |||
| 7601 | (C and x)<br> or choice of | |||
| 7602 | pre-defined parameters of specific models (see note below). | |||
| 7603 | \param f_grid predefined frequency grid [Hz] | |||
| 7604 | \param abs_t predefined temperature grid [K] | |||
| 7605 | \param abs_p predefined pressure [Pa] | |||
| 7606 | \param vmr H2O volume mixing ratio [1] | |||
| 7607 | ||||
| 7608 | \note Except for model 'user' the input parameters C and x | |||
| 7609 | are neglected (model dominates over parameters).<br> | |||
| 7610 | Allowed models: 'Rosenkranz', 'CruzPol', 'MPM89', 'MPM87', and 'user'. | |||
| 7611 | See the user guide for detailed explanations. | |||
| 7612 | ||||
| 7613 | \remark Reference: P. W. Rosenkranz., Radio Science, 33(4), 919, 1998 and | |||
| 7614 | Radio Science, Vol. 34(4), 1025, 1999. | |||
| 7615 | ||||
| 7616 | \author Thomas Kuhn | |||
| 7617 | \date 2001-08-03 | |||
| 7618 | */ | |||
| 7619 | void Standard_H2O_foreign_continuum (MatrixView pxsec, | |||
| 7620 | const Numeric Cin, | |||
| 7621 | const Numeric xin, | |||
| 7622 | const String& model, | |||
| 7623 | ConstVectorView f_grid, | |||
| 7624 | ConstVectorView abs_p, | |||
| 7625 | ConstVectorView abs_t, | |||
| 7626 | ConstVectorView vmr, | |||
| 7627 | const Verbosity& verbosity) | |||
| 7628 | { | |||
| 7629 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 7630 | ||||
| 7631 | // --------- STANDARD MODEL PARAMETERS --------------------------------------------------- | |||
| 7632 | // standard values for the Rosenkranz model (Radio Science, 33(4), 919, 1998): | |||
| 7633 | const Numeric Cf_PWR = 5.43e-35 ; // [1/m / (Hz²*Pa²)] | |||
| 7634 | const Numeric xf_PWR = 0.0; // [1] | |||
| 7635 | // standard values for the Cruz-Pol model (Radio Science, 33(5), 1319, 1998): | |||
| 7636 | const Numeric Cf_CP = 5.85e-35; // [1/m / (Hz²*Pa²)] | |||
| 7637 | const Numeric xf_CP = 0.0; // [1] | |||
| 7638 | // standard values for the MPM89 model (Int. J. Inf. and Millim. Waves, 10(6), 1989, 631): | |||
| 7639 | const Numeric Cf_MPM89 = 4.74e-35; // [1/m / (Hz²*Pa²)] | |||
| 7640 | const Numeric xf_MPM89 = 0.0; // [1] | |||
| 7641 | // standard values for the MPM87 model (Radio Science, 20(5), 1985, 1069): | |||
| 7642 | const Numeric Cf_MPM87 = 4.74e-35; // [1/m / (Hz²*Pa²)] | |||
| 7643 | const Numeric xf_MPM87 = 0.0; // [1] | |||
| 7644 | // --------------------------------------------------------------------------------------- | |||
| 7645 | ||||
| 7646 | ||||
| 7647 | // select the parameter set (!!model goes for values!!): | |||
| 7648 | Numeric C, x; | |||
| 7649 | if ( model == "Rosenkranz" ) | |||
| 7650 | { | |||
| 7651 | C = Cf_PWR; | |||
| 7652 | x = xf_PWR; | |||
| 7653 | } | |||
| 7654 | else if ( model == "CruzPol" ) | |||
| 7655 | { | |||
| 7656 | C = Cf_CP; | |||
| 7657 | x = xf_CP; | |||
| 7658 | } | |||
| 7659 | else if ( model == "MPM89" ) | |||
| 7660 | { | |||
| 7661 | C = Cf_MPM89; | |||
| 7662 | x = xf_MPM89; | |||
| 7663 | } | |||
| 7664 | else if ( model == "MPM87" ) | |||
| 7665 | { | |||
| 7666 | C = Cf_MPM87; | |||
| 7667 | x = xf_MPM87; | |||
| 7668 | } | |||
| 7669 | else if ( model == "user" ) | |||
| 7670 | { | |||
| 7671 | C = Cin; | |||
| 7672 | x = xin; | |||
| 7673 | } | |||
| 7674 | else | |||
| 7675 | { | |||
| 7676 | ostringstream os; | |||
| 7677 | os << "H2O-ForeignContStandardType: ERROR! Wrong model values given.\n" | |||
| 7678 | << "allowed models are: 'Rosenkranz', 'CruzPol', 'MPM89', 'MPM87', 'user'" << '\n'; | |||
| 7679 | throw runtime_error(os.str()); | |||
| 7680 | } | |||
| 7681 | out3 << "H2O-ForeignContStandardType: (model=" << model << ") parameter values in use:\n" | |||
| 7682 | << " C_s = " << C << "\n" | |||
| 7683 | << " x_s = " << x << "\n"; | |||
| 7684 | ||||
| 7685 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 7686 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 7687 | ||||
| 7688 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 7689 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 7689 , "n_p==abs_t.nelem()") : (void)0); | |||
| 7690 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 7690 , "n_p==vmr.nelem()") : (void)0); | |||
| 7691 | ||||
| 7692 | // Check that dimensions of pxsec are consistent with n_f | |||
| 7693 | // and n_p. It should be [n_f,n_p]: | |||
| 7694 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 7694 , "n_f==pxsec.nrows()") : (void)0); | |||
| 7695 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 7695 , "n_p==pxsec.ncols()") : (void)0); | |||
| 7696 | ||||
| 7697 | // Loop pressure/temperature: | |||
| 7698 | for ( Index i=0; i<n_p; ++i ) | |||
| 7699 | { | |||
| 7700 | // Dry air partial pressure: p_dry := p_tot - p_h2o. | |||
| 7701 | Numeric pdry = abs_p[i] * (1.000e0-vmr[i]); | |||
| 7702 | // Dummy scalar holds everything except the quadratic frequency dependence. | |||
| 7703 | // The vmr of H2O will be multiplied at the stage of absorption | |||
| 7704 | // calculation: abs = vmr * pxsec. | |||
| 7705 | Numeric dummy = C * pow( (Numeric)300./abs_t[i], x+(Numeric)3. ) | |||
| 7706 | * abs_p[i] * pdry; | |||
| 7707 | ||||
| 7708 | // Loop frequency: | |||
| 7709 | for ( Index s=0; s<n_f; ++s ) | |||
| 7710 | { | |||
| 7711 | pxsec(s,i) += dummy * pow( f_grid[s], (Numeric)2. ); | |||
| 7712 | // cout << "pxsec(" << s << "," << i << "): " << pxsec(s,i) << "\n"; | |||
| 7713 | } | |||
| 7714 | } | |||
| 7715 | } | |||
| 7716 | // | |||
| 7717 | // | |||
| 7718 | // ################################################################################# | |||
| 7719 | //! MaTipping_H2O_foreign_continuum | |||
| 7720 | /*! | |||
| 7721 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 7722 | the H2O-dry air continuum [1/m] | |||
| 7723 | \param Cin constant absorption strength [1/m / (Hz*Pa)²] | |||
| 7724 | \param xin temperature exponent [1] | |||
| 7725 | \param model allows user defined input parameter set | |||
| 7726 | (C and x)<br> or choice of | |||
| 7727 | pre-defined parameters of specific models (see note below). | |||
| 7728 | \param f_grid predefined frequency grid [Hz] | |||
| 7729 | \param abs_p predefined pressure [Pa] | |||
| 7730 | \param abs_t predefined temperature grid [K] | |||
| 7731 | \param vmr H2O volume mixing ratio [1] | |||
| 7732 | ||||
| 7733 | \note Except for model 'user' the input parameters C and x | |||
| 7734 | are neglected (model dominates over parameters).<br> | |||
| 7735 | Allowed models: 'MaTipping', and 'user'. | |||
| 7736 | See the user guide for detailed explanations. | |||
| 7737 | ||||
| 7738 | \remark Reference: Q. Ma and R. H. Tipping, J. Chem. Phys., 117(23), 10581, 2002. | |||
| 7739 | ||||
| 7740 | \author Thomas Kuhn | |||
| 7741 | \date 2002-12-04 | |||
| 7742 | */ | |||
| 7743 | void MaTipping_H2O_foreign_continuum (MatrixView pxsec, | |||
| 7744 | const Numeric Cin, | |||
| 7745 | const Numeric xin, | |||
| 7746 | const String& model, | |||
| 7747 | ConstVectorView f_grid, | |||
| 7748 | ConstVectorView abs_p, | |||
| 7749 | ConstVectorView abs_t, | |||
| 7750 | ConstVectorView vmr, | |||
| 7751 | const Verbosity& verbosity) | |||
| 7752 | { | |||
| 7753 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 7754 | ||||
| 7755 | // --------- STANDARD MODEL PARAMETERS --------------------------------------------------- | |||
| 7756 | // standard values for Q. Ma and R. H. Tipping, J. Chem. Phys., 117(23), 10581, 2002: | |||
| 7757 | // the Cf value is originally given in dB/km/kPa^2/GHz^2.0389. the conversion factor is | |||
| 7758 | // then 1.0283E-28 to get arts units. Additionally the Cf value is divided by 1.08 to | |||
| 7759 | // get the Cf for air. | |||
| 7760 | const Numeric Cf_MaTipping = 1.8590e-35; // [1/m / (Hz²*Pa²)] | |||
| 7761 | const Numeric xf_MaTipping = 4.6019; // [1] | |||
| 7762 | // --------------------------------------------------------------------------------------- | |||
| 7763 | ||||
| 7764 | ||||
| 7765 | // select the parameter set (!!model goes for values!!): | |||
| 7766 | Numeric C, x; | |||
| 7767 | if ( model == "MaTipping" ) | |||
| 7768 | { | |||
| 7769 | C = Cf_MaTipping; | |||
| 7770 | x = xf_MaTipping; | |||
| 7771 | } | |||
| 7772 | else if ( model == "user" ) | |||
| 7773 | { | |||
| 7774 | C = Cin; | |||
| 7775 | x = xin; | |||
| 7776 | } | |||
| 7777 | else | |||
| 7778 | { | |||
| 7779 | ostringstream os; | |||
| 7780 | os << "H2O-MaTipping_H2O_foreign_continuum: ERROR! Wrong model values given.\n" | |||
| 7781 | << "allowed models are: 'MaTipping', 'user'" << '\n'; | |||
| 7782 | throw runtime_error(os.str()); | |||
| 7783 | } | |||
| 7784 | out3 << "H2O-MaTipping_H2O_foreign_continuum: (model=" << model << ") parameter values in use:\n" | |||
| 7785 | << " C_s = " << C << "\n" | |||
| 7786 | << " x_s = " << x << "\n"; | |||
| 7787 | ||||
| 7788 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 7789 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 7790 | ||||
| 7791 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 7792 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 7792 , "n_p==abs_t.nelem()") : (void)0); | |||
| 7793 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 7793 , "n_p==vmr.nelem()") : (void)0); | |||
| 7794 | ||||
| 7795 | // Check that dimensions of pxsec are consistent with n_f | |||
| 7796 | // and n_p. It should be [n_f,n_p]: | |||
| 7797 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 7797 , "n_f==pxsec.nrows()") : (void)0); | |||
| 7798 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 7798 , "n_p==pxsec.ncols()") : (void)0); | |||
| 7799 | ||||
| 7800 | // Loop pressure/temperature: | |||
| 7801 | for ( Index i=0; i<n_p; ++i ) | |||
| 7802 | { | |||
| 7803 | // Dry air partial pressure: p_dry := p_tot - p_h2o. | |||
| 7804 | Numeric pdry = abs_p[i] * (1.000e0-vmr[i]); | |||
| 7805 | // Dummy scalar holds everything except the quadratic frequency dependence. | |||
| 7806 | // The vmr of H2O will be multiplied at the stage of absorption | |||
| 7807 | // calculation: abs = vmr * pxsec. | |||
| 7808 | Numeric dummy = C * pow( (Numeric)300./abs_t[i], x ) | |||
| 7809 | * abs_p[i] * pdry; | |||
| 7810 | ||||
| 7811 | // Loop frequency: | |||
| 7812 | for ( Index s=0; s<n_f; ++s ) | |||
| 7813 | { | |||
| 7814 | pxsec(s,i) += dummy * pow( f_grid[s], (Numeric)2.0389 ); | |||
| 7815 | // cout << "pxsec(" << s << "," << i << "): " << pxsec(s,i) << "\n"; | |||
| 7816 | } | |||
| 7817 | } | |||
| 7818 | } | |||
| 7819 | // | |||
| 7820 | // ################################################################################# | |||
| 7821 | ||||
| 7822 | ||||
| 7823 | ||||
| 7824 | // ================================================================================= | |||
| 7825 | ||||
| 7826 | ||||
| 7827 | Numeric XINT_FUN( const Numeric V1A, | |||
| 7828 | const Numeric /* V2A */, | |||
| 7829 | const Numeric DVA, | |||
| 7830 | ConstVectorView A, | |||
| 7831 | const Numeric VI) | |||
| 7832 | { | |||
| 7833 | ||||
| 7834 | // ---------------------------------------------------------------------- | |||
| 7835 | // THIS SUBROUTINE INTERPOLATES THE A ARRAY STORED | |||
| 7836 | // FROM V1A TO V2A IN INCREMENTS OF DVA INTO XINT | |||
| 7837 | // ---------------------------------------------------------------------- | |||
| 7838 | ||||
| 7839 | const Numeric ONEPL = 1.001; // original value given in F77 code | |||
| 7840 | // FIXME const Numeric ONEMI = 0.999; // original value given in F77 code | |||
| 7841 | ||||
| 7842 | //const Numeric ONEPL = 0.001; // modified value for C/C++ code | |||
| 7843 | ||||
| 7844 | Numeric RECDVA = 1.00e0/DVA; | |||
| 7845 | ||||
| 7846 | int J = (int) ((VI-V1A)*RECDVA + ONEPL) ; | |||
| 7847 | Numeric VJ = V1A + DVA * (Numeric)(J-1); | |||
| 7848 | Numeric P = RECDVA * (VI-VJ); | |||
| 7849 | Numeric C = (3.00e0-2.00e0*P) * P * P; | |||
| 7850 | Numeric B = 0.500e0 * P * (1.00e0-P); | |||
| 7851 | Numeric B1 = B * (1.00e0-P); | |||
| 7852 | Numeric B2 = B * P; | |||
| 7853 | ||||
| 7854 | Numeric xint = 0.; | |||
| 7855 | if (J-1 > 0 && J+2 < A.nelem()) | |||
| 7856 | { | |||
| 7857 | xint = -A[J-1] * B1 + | |||
| 7858 | A[J] * (1.00e0-C+B2) + | |||
| 7859 | A[J+1] * (C+B1) - | |||
| 7860 | A[J+2] * B2; | |||
| 7861 | } | |||
| 7862 | ||||
| 7863 | /* | |||
| 7864 | cout << (J-1) << " <-> " << (J+2) | |||
| 7865 | << ", V=" << VI << ", VJ=" << VJ << "\n"; | |||
| 7866 | cout << "xint=" << xint << " " << A[J-1] << " " << A[J] << " " << A[J+1] << " " << A[J+2] << "\n"; | |||
| 7867 | */ | |||
| 7868 | ||||
| 7869 | return xint; | |||
| 7870 | } | |||
| 7871 | ||||
| 7872 | Numeric XINT_FUN( const Numeric V1A, | |||
| 7873 | const Numeric /* V2A */, | |||
| 7874 | const Numeric DVA, | |||
| 7875 | const Numeric A[], | |||
| 7876 | const Index nA, | |||
| 7877 | const Numeric VI) | |||
| 7878 | { | |||
| 7879 | ||||
| 7880 | // ---------------------------------------------------------------------- | |||
| 7881 | // THIS SUBROUTINE INTERPOLATES THE A ARRAY STORED | |||
| 7882 | // FROM V1A TO V2A IN INCREMENTS OF DVA INTO XINT | |||
| 7883 | // ---------------------------------------------------------------------- | |||
| 7884 | ||||
| 7885 | const Numeric ONEPL = 1.001; // original value given in F77 code | |||
| 7886 | // FIXME const Numeric ONEMI = 0.999; // original value given in F77 code | |||
| 7887 | ||||
| 7888 | //const Numeric ONEPL = 0.001; // modified value for C/C++ code | |||
| 7889 | ||||
| 7890 | Numeric RECDVA = 1.00e0/DVA; | |||
| 7891 | ||||
| 7892 | int J = (int) ((VI-V1A)*RECDVA + ONEPL) ; | |||
| 7893 | Numeric VJ = V1A + DVA * (Numeric)(J-1); | |||
| 7894 | Numeric P = RECDVA * (VI-VJ); | |||
| 7895 | Numeric C = (3.00e0-2.00e0*P) * P * P; | |||
| 7896 | Numeric B = 0.500e0 * P * (1.00e0-P); | |||
| 7897 | Numeric B1 = B * (1.00e0-P); | |||
| 7898 | Numeric B2 = B * P; | |||
| 7899 | ||||
| 7900 | Numeric xint = 0.; | |||
| 7901 | if (J-1 > 0 && J+2 < nA) | |||
| 7902 | { | |||
| 7903 | xint = -A[J-1] * B1 + | |||
| 7904 | A[J] * (1.00e0-C+B2) + | |||
| 7905 | A[J+1] * (C+B1) - | |||
| 7906 | A[J+2] * B2; | |||
| 7907 | } | |||
| 7908 | ||||
| 7909 | /* | |||
| 7910 | cout << (J-1) << " <-> " << (J+2) | |||
| 7911 | << ", V=" << VI << ", VJ=" << VJ << "\n"; | |||
| 7912 | cout << "xint=" << xint << " " << A[J-1] << " " << A[J] << " " << A[J+1] << " " << A[J+2] << "\n"; | |||
| 7913 | */ | |||
| 7914 | ||||
| 7915 | return xint; | |||
| 7916 | } | |||
| 7917 | ||||
| 7918 | // ================================================================================= | |||
| 7919 | ||||
| 7920 | Numeric RADFN_FUN (const Numeric VI, | |||
| 7921 | const Numeric XKT) | |||
| 7922 | { | |||
| 7923 | // ---------------------------------------------------------------------- B18060 | |||
| 7924 | // LAST MODIFICATION: 12 AUGUST 1991 B17940 | |||
| 7925 | // B17950 | |||
| 7926 | // IMPLEMENTATION: R.D. WORSHAM B17960 | |||
| 7927 | // B17970 | |||
| 7928 | // ALGORITHM REVISIONS: S.A. CLOUGH B17980 | |||
| 7929 | // R.D. WORSHAM B17990 | |||
| 7930 | // J.L. MONCET B18000 | |||
| 7931 | // B18010 | |||
| 7932 | // B18020 | |||
| 7933 | // ATMOSPHERIC AND ENVIRONMENTAL RESEARCH INC. B18030 | |||
| 7934 | // 840 MEMORIAL DRIVE, CAMBRIDGE, MA 02139 B18040 | |||
| 7935 | // B18050 | |||
| 7936 | // B18070 | |||
| 7937 | // WORK SUPPORTED BY: THE ARM PROGRAM B18080 | |||
| 7938 | // OFFICE OF ENERGY RESEARCH B18090 | |||
| 7939 | // DEPARTMENT OF ENERGY B18100 | |||
| 7940 | // B18110 | |||
| 7941 | // B18120 | |||
| 7942 | // SOURCE OF ORIGINAL ROUTINE: AFGL LINE-BY-LINE MODEL B18130 | |||
| 7943 | // B18140 | |||
| 7944 | // FASCOD3 B18150 | |||
| 7945 | // B18160 | |||
| 7946 | // ---------------------------------------------------------------------- B18060 | |||
| 7947 | // B18170 | |||
| 7948 | // IN THE SMALL XVIOKT REGION 0.5 IS REQUIRED | |||
| 7949 | ||||
| 7950 | Numeric XVI = VI; | |||
| 7951 | Numeric RADFN = 0.00e0; | |||
| 7952 | ||||
| 7953 | if (XKT > 0.0) | |||
| 7954 | { | |||
| 7955 | Numeric XVIOKT = XVI/XKT; | |||
| 7956 | ||||
| 7957 | if (XVIOKT <= 0.01e0) | |||
| 7958 | { | |||
| 7959 | RADFN = 0.500e0 * XVIOKT * XVI; | |||
| 7960 | } | |||
| 7961 | else if (XVIOKT <= 10.0e0) | |||
| 7962 | { | |||
| 7963 | Numeric EXPVKT = exp(-XVIOKT); | |||
| 7964 | RADFN = XVI * (1.00e0-EXPVKT) / (1.00e0+EXPVKT); | |||
| 7965 | } | |||
| 7966 | else | |||
| 7967 | { | |||
| 7968 | RADFN = XVI; | |||
| 7969 | } | |||
| 7970 | } | |||
| 7971 | else | |||
| 7972 | { | |||
| 7973 | RADFN = XVI; | |||
| 7974 | } | |||
| 7975 | ||||
| 7976 | return RADFN; | |||
| 7977 | } | |||
| 7978 | ||||
| 7979 | // ================================================================================= | |||
| 7980 | ||||
| 7981 | //! CKD version 2.2.2 H2O self continuum absorption model | |||
| 7982 | /*! | |||
| 7983 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 7984 | H2O self continuum according to CKD_2_2_2 [1/m] | |||
| 7985 | \param Cin strength scaling factor [1] | |||
| 7986 | \param model allows user defined input parameter set | |||
| 7987 | (Cin)<br> | |||
| 7988 | or choice of | |||
| 7989 | pre-defined parameters of specific models (see note below). | |||
| 7990 | \param f_grid predefined frequency grid [Hz] | |||
| 7991 | \param abs_p predefined pressure grid [Pa] | |||
| 7992 | \param abs_t predefined temperature grid [K] | |||
| 7993 | \param vmr H2O volume mixing ratio profile [1] | |||
| 7994 | ||||
| 7995 | \note This absorption model is taken from the FORTRAN77 code of | |||
| 7996 | CKD version 2.2.2 written by<br> | |||
| 7997 | Atmospheric and Environmental Research Inc. (AER),<br> | |||
| 7998 | Radiation and Climate Group<br> | |||
| 7999 | 131 Hartwell Avenue<br> | |||
| 8000 | Lexington, MA 02421, USA<br> | |||
| 8001 | http://www.rtweb.aer.com/continuum_frame.html | |||
| 8002 | ||||
| 8003 | \author Thomas Kuhn | |||
| 8004 | \date 2002-31-10 | |||
| 8005 | */ | |||
| 8006 | void CKD_222_self_h2o (MatrixView pxsec, | |||
| 8007 | const Numeric Cin, | |||
| 8008 | const String& model, | |||
| 8009 | ConstVectorView f_grid, | |||
| 8010 | ConstVectorView abs_p, | |||
| 8011 | ConstVectorView abs_t, | |||
| 8012 | ConstVectorView vmr, | |||
| 8013 | const Verbosity& verbosity) | |||
| 8014 | { | |||
| 8015 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 8016 | ||||
| 8017 | // check the model name about consistency | |||
| 8018 | if ((model != "user") && (model != "CKD222")) | |||
| 8019 | { | |||
| 8020 | ostringstream os; | |||
| 8021 | os << "!!ERROR!!\n" | |||
| 8022 | << "CKDv2.2.2 H2O self continuum:\n" | |||
| 8023 | << "INPUT model name is: " << model << ".\n" | |||
| 8024 | << "VALID model names are user and CKD222\n"; | |||
| 8025 | throw runtime_error(os.str()); | |||
| 8026 | } | |||
| 8027 | ||||
| 8028 | ||||
| 8029 | // scaling factor of the self H2O cont. absorption | |||
| 8030 | Numeric ScalingFac = 1.0000e0; | |||
| 8031 | if ( model == "user" ) | |||
| 8032 | { | |||
| 8033 | ScalingFac = Cin; // input scaling factor of calculated absorption | |||
| 8034 | } | |||
| 8035 | ||||
| 8036 | ||||
| 8037 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 8038 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 8039 | ||||
| 8040 | ||||
| 8041 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 8042 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 8042 , "n_p==abs_t.nelem()") : (void)0); | |||
| 8043 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 8043 , "n_p==vmr.nelem()") : (void)0); | |||
| 8044 | ||||
| 8045 | // Check that dimensions of pxsec are consistent with n_f | |||
| 8046 | // and n_p. It should be [n_f,n_p]: | |||
| 8047 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 8047 , "n_f==pxsec.nrows()") : (void)0); | |||
| 8048 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 8048 , "n_p==pxsec.ncols()") : (void)0); | |||
| 8049 | ||||
| 8050 | ||||
| 8051 | // ************************** CKD stuff ************************************ | |||
| 8052 | ||||
| 8053 | const Numeric xLosmt = 2.686763e19; // [molecules/cm^3] | |||
| 8054 | // FIXME const Numeric T1 = 273.0e0; | |||
| 8055 | const Numeric TO = 296.0e0; | |||
| 8056 | const Numeric PO = 1013.0e0; | |||
| 8057 | ||||
| 8058 | // CKD2.2.2 specific self continuum correction function parameters | |||
| 8059 | const Numeric ALPHA2 = 200.000 * 200.000; | |||
| 8060 | const Numeric ALPHS2 = 120.000 * 120.000; | |||
| 8061 | const Numeric BETAS = 5.000e-06; | |||
| 8062 | const Numeric V0S = 1310.000; | |||
| 8063 | const Numeric FACTRS = 0.150; | |||
| 8064 | ||||
| 8065 | // These are self-continuum modification factors from 700-1200 cm-1 | |||
| 8066 | const Numeric XFAC[51] = { | |||
| 8067 | 1.00000,1.01792,1.03767,1.05749,1.07730,1.09708, | |||
| 8068 | 1.10489,1.11268,1.12047,1.12822,1.13597,1.14367, | |||
| 8069 | 1.15135,1.15904,1.16669,1.17431,1.18786,1.20134, | |||
| 8070 | 1.21479,1.22821,1.24158,1.26580,1.28991,1.28295, | |||
| 8071 | 1.27600,1.26896,1.25550,1.24213,1.22879,1.21560, | |||
| 8072 | 1.20230,1.18162,1.16112,1.14063,1.12016,1.10195, | |||
| 8073 | 1.09207,1.08622,1.08105,1.07765,1.07398,1.06620, | |||
| 8074 | 1.05791,1.04905,1.03976,1.02981,1.00985,1.00000, | |||
| 8075 | 1.00000,1.00000,1.00000}; | |||
| 8076 | ||||
| 8077 | // wavenumber range where CKD H2O self continuum is valid | |||
| 8078 | const Numeric VABS_min = SL260_ckd_0_v1; // [cm^-1] | |||
| 8079 | const Numeric VABS_max = SL260_ckd_0_v2; // [cm^-1] | |||
| 8080 | ||||
| 8081 | ||||
| 8082 | // It is assumed here that f_grid is monotonically increasing with index! | |||
| 8083 | // In future change this return into a change of the loop over | |||
| 8084 | // the frequency f_grid. n_f_new < n_f | |||
| 8085 | Numeric V1ABS = f_grid[0] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 8086 | Numeric V2ABS = f_grid[n_f-1] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 8087 | if ( (V1ABS < VABS_min) || (V1ABS > VABS_max) || | |||
| 8088 | (V2ABS < VABS_min) || (V2ABS > VABS_max) ) | |||
| 8089 | { | |||
| 8090 | out3 << "WARNING:\n" | |||
| 8091 | << " CKD2.2.2 H2O self continuum:\n" | |||
| 8092 | << " input frequency vector exceeds range of model validity\n" | |||
| 8093 | << " " << SL296_ckd_0_v1 << "<->" << SL296_ckd_0_v2 << "cm^-1\n"; | |||
| 8094 | } | |||
| 8095 | ||||
| 8096 | ||||
| 8097 | // ------------------- subroutine SL296/SL260 ---------------------------- | |||
| 8098 | ||||
| 8099 | if (SL296_ckd_0_v1 != SL260_ckd_0_v1) | |||
| 8100 | { | |||
| 8101 | ostringstream os; | |||
| 8102 | os << "!!ERROR!!\n" | |||
| 8103 | << "CKD2.2.2 H2O self continuum:\n" | |||
| 8104 | << "parameter V1 not the same for different ref. temperatures.\n"; | |||
| 8105 | throw runtime_error(os.str()); | |||
| 8106 | } | |||
| 8107 | if (SL296_ckd_0_v2 != SL260_ckd_0_v2) | |||
| 8108 | { | |||
| 8109 | ostringstream os; | |||
| 8110 | os << "!!ERROR!!\n" | |||
| 8111 | << "CKD2.2.2 H2O self continuum:\n" | |||
| 8112 | << "parameter V2 not the same for different ref. temperatures.\n"; | |||
| 8113 | throw runtime_error(os.str()); | |||
| 8114 | } | |||
| 8115 | if (SL296_ckd_0_dv != SL260_ckd_0_dv) | |||
| 8116 | { | |||
| 8117 | ostringstream os; | |||
| 8118 | os << "!!ERROR!!\n" | |||
| 8119 | << "CKD2.2.2 H2O self continuum:\n" | |||
| 8120 | << "parameter DV not the same for different ref. temperatures.\n"; | |||
| 8121 | throw runtime_error(os.str()); | |||
| 8122 | } | |||
| 8123 | if (SL296_ckd_0_npt != SL260_ckd_0_npt) | |||
| 8124 | { | |||
| 8125 | ostringstream os; | |||
| 8126 | os << "!!ERROR!!\n" | |||
| 8127 | << "CKD2.2.2 H2O self continuum:\n" | |||
| 8128 | << "parameter NPT not the same for different ref. temperatures.\n"; | |||
| 8129 | throw runtime_error(os.str()); | |||
| 8130 | } | |||
| 8131 | ||||
| 8132 | // retrieve the appropriate array sequence of the self continuum | |||
| 8133 | // arrays of the CKD model. | |||
| 8134 | Numeric DVC = SL296_ckd_0_dv; | |||
| 8135 | Numeric V1C = V1ABS - DVC; | |||
| 8136 | Numeric V2C = V2ABS + DVC; | |||
| 8137 | ||||
| 8138 | int I1 = (int) ((V1C-SL296_ckd_0_v1) / SL296_ckd_0_dv); | |||
| 8139 | if (V1C < SL296_ckd_0_v1) I1 = -1; | |||
| 8140 | V1C = SL296_ckd_0_v1 + (SL296_ckd_0_dv * (Numeric)I1); | |||
| 8141 | ||||
| 8142 | int I2 = (int) ((V2C-SL296_ckd_0_v1) / SL296_ckd_0_dv); | |||
| 8143 | ||||
| 8144 | int NPTC = I2-I1+3; | |||
| 8145 | if (NPTC > SL296_ckd_0_npt) NPTC = SL296_ckd_0_npt+1; | |||
| 8146 | ||||
| 8147 | V2C = V1C + SL296_ckd_0_dv * (Numeric)(NPTC-1); | |||
| 8148 | ||||
| 8149 | if (NPTC < 1) | |||
| 8150 | { | |||
| 8151 | out3 << "WARNING:\n" | |||
| 8152 | << " CKD2.2.2 H2O self continuum:\n" | |||
| 8153 | << " no elements of internal continuum coefficients could be found for the\n" | |||
| 8154 | << " input frequency range.\n" | |||
| 8155 | << " Leave the function without calculating the absorption."; | |||
| 8156 | return; | |||
| 8157 | } | |||
| 8158 | ||||
| 8159 | Numeric SH2OT0[NPTC+addF77fields]; // [cm^3/molecules] | |||
| 8160 | Numeric SH2OT1[NPTC+addF77fields]; // [cm^3/molecules] | |||
| 8161 | ||||
| 8162 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 8163 | { | |||
| 8164 | Index I = I1+J; | |||
| 8165 | if ( (I < 1) || (I > SL296_ckd_0_npt) ) | |||
| 8166 | { | |||
| 8167 | SH2OT0[J] = 0.0e0; // at T=296 K | |||
| 8168 | SH2OT1[J] = 0.0e0; // at T=260 K | |||
| 8169 | } | |||
| 8170 | else | |||
| 8171 | { | |||
| 8172 | SH2OT0[J] = SL296_ckd_0[I]; // at T=296 K | |||
| 8173 | SH2OT1[J] = SL260_ckd_0[I]; // at T=260 K | |||
| 8174 | } | |||
| 8175 | } | |||
| 8176 | ||||
| 8177 | // ------------------- subroutine SL296/SL260 ---------------------------- | |||
| 8178 | ||||
| 8179 | Numeric SFAC = 1.00e0; | |||
| 8180 | Numeric VS2 = 0.00e0; | |||
| 8181 | // FIXME Numeric VS4 = 0.00e0; | |||
| 8182 | ||||
| 8183 | // Loop pressure/temperature: | |||
| 8184 | for ( Index i = 0 ; i < n_p ; ++i ) | |||
| 8185 | { | |||
| 8186 | ||||
| 8187 | // atmospheric state parameters | |||
| 8188 | Numeric Tave = abs_t[i]; // [K] | |||
| 8189 | Numeric Pave = (abs_p[i]*1.000e-2); // [hPa] | |||
| 8190 | Numeric Patm = Pave/PO; // [1] | |||
| 8191 | Numeric vmrh2o = vmr[i]; // [1] | |||
| 8192 | // FIXME Numeric Ph2o = Patm * vmrh2o; // [1] | |||
| 8193 | // second vmr in abs_coefCalc multiplied | |||
| 8194 | Numeric Rh2o = Patm * (TO/Tave); // [1] | |||
| 8195 | Numeric Tfac = (Tave-TO)/(260.0-TO); // [1] | |||
| 8196 | Numeric WTOT = xLosmt * (Pave/1.013000e3) * (2.7300e2/Tave); // [molecules/cm^2] | |||
| 8197 | Numeric W1 = vmrh2o * WTOT; // [molecules/cm^2] | |||
| 8198 | Numeric XKT = Tave / 1.4387752e0; // = (T*k_B)/(h*c) | |||
| 8199 | ||||
| 8200 | // Molecular cross section calculated by CKD. | |||
| 8201 | // The cross sectionis calculated on the predefined | |||
| 8202 | // CKD wavenumber grid. | |||
| 8203 | Numeric k[NPTC+addF77fields]; // [1/cm] | |||
| 8204 | k[0] = 0.00e0; // not used array field | |||
| 8205 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 8206 | { | |||
| 8207 | Numeric VJ = V1C + (DVC * (Numeric)(J-1)); | |||
| 8208 | Numeric SH2O = 0.0e0; | |||
| 8209 | if (SH2OT0[J] > 0.0e0) | |||
| 8210 | { | |||
| 8211 | SH2O = SH2OT0[J] * pow( (SH2OT1[J]/SH2OT0[J]), Tfac ); | |||
| 8212 | SFAC = 1.00e0; | |||
| 8213 | ||||
| 8214 | if ( (VJ >= 700.0e0) && (VJ <= 1200.0e0) ) | |||
| 8215 | { | |||
| 8216 | int JFAC = (int)((VJ - 700.0e0)/10.0e0 + 0.00001e0); | |||
| 8217 | if ( (JFAC >= 0) && (JFAC <= 50) ) | |||
| 8218 | SFAC = XFAC[JFAC]; | |||
| 8219 | } | |||
| 8220 | ||||
| 8221 | // --------------------------------------------------------- | |||
| 8222 | // Correction to self continuum (1 SEPT 85); factor of | |||
| 8223 | // 0.78 at 1000 and ....... | |||
| 8224 | ||||
| 8225 | VS2 = (VJ-V0S) * (VJ-V0S); | |||
| 8226 | ||||
| 8227 | SFAC = SFAC * | |||
| 8228 | ( 1.000e0 + 0.3000e0 * (1.000e4 / ((VJ*VJ) + 1.000e4)) ) * | |||
| 8229 | ( 1.000e0 - 0.2333e0 * (ALPHA2 / ((VJ-1050.000e0)*(VJ-1050.000e0) + ALPHA2)) ) * | |||
| 8230 | ( 1.000e0 - FACTRS * (ALPHS2 / (VS2+(BETAS*VS2*VS2)+ALPHS2)) ); | |||
| 8231 | ||||
| 8232 | SH2O = SFAC * SH2O; | |||
| 8233 | } | |||
| 8234 | ||||
| 8235 | // CKD cross section with radiative field [1/cm] | |||
| 8236 | // the VMRH2O will be multiplied in abs_coefCalc, hence Rh2o does not contain | |||
| 8237 | // VMRH2O as multiplicative term | |||
| 8238 | k[J] = W1 * Rh2o * (SH2O*1.000e-20) * RADFN_FUN(VJ,XKT); // [1] | |||
| 8239 | ||||
| 8240 | } | |||
| 8241 | ||||
| 8242 | ||||
| 8243 | // Loop input frequency array. The previously calculated cross section | |||
| 8244 | // has therefore to be interpolated on the input frequencies. | |||
| 8245 | for ( Index s = 0 ; s < n_f ; ++s ) | |||
| 8246 | { | |||
| 8247 | // calculate the associated wave number (= 1/wavelength) | |||
| 8248 | Numeric V = f_grid[s] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 8249 | if ( (V >= 0.000e0) && (V < SL296_ckd_0_v2) ) | |||
| 8250 | { | |||
| 8251 | // arts cross section [1/m] | |||
| 8252 | // interpolate the k vector on the f_grid grid | |||
| 8253 | // The factor 100 comes from the conversion from 1/cm to 1/m for | |||
| 8254 | // the absorption coefficient | |||
| 8255 | pxsec(s,i) += ScalingFac * 1.000e2 * XINT_FUN(V1C,V2C,DVC,k, | |||
| 8256 | NPTC+addF77fields,V); | |||
| 8257 | } | |||
| 8258 | } | |||
| 8259 | } | |||
| 8260 | ||||
| 8261 | } | |||
| 8262 | ||||
| 8263 | ||||
| 8264 | ||||
| 8265 | // ================================================================================= | |||
| 8266 | ||||
| 8267 | //! CKD version 2.2.2 H2O foreign continuum absorption model | |||
| 8268 | /*! | |||
| 8269 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 8270 | H2O foreign continuum according to CKDv.2.2.2 [1/m] | |||
| 8271 | \param Cin strength scaling factor [1] | |||
| 8272 | \param model allows user defined input parameter set | |||
| 8273 | (Cin)<br> | |||
| 8274 | or choice of | |||
| 8275 | pre-defined parameters of specific models (see note below). | |||
| 8276 | \param f_grid predefined frequency grid [Hz] | |||
| 8277 | \param abs_p predefined pressure grid [Pa] | |||
| 8278 | \param abs_t predefined temperature grid [K] | |||
| 8279 | \param vmr H2O volume mixing ratio profile [1] | |||
| 8280 | ||||
| 8281 | \note This absorption model is taken from the FORTRAN77 code of | |||
| 8282 | CKD version 2.2.2 written by<br> | |||
| 8283 | Atmospheric and Environmental Research Inc. (AER),<br> | |||
| 8284 | Radiation and Climate Group<br> | |||
| 8285 | 131 Hartwell Avenue<br> | |||
| 8286 | Lexington, MA 02421, USA<br> | |||
| 8287 | http://www.rtweb.aer.com/continuum_frame.html | |||
| 8288 | ||||
| 8289 | \author Thomas Kuhn | |||
| 8290 | \date 2002-28-08 | |||
| 8291 | */ | |||
| 8292 | void CKD_222_foreign_h2o (MatrixView pxsec, | |||
| 8293 | const Numeric Cin, | |||
| 8294 | const String& model, | |||
| 8295 | ConstVectorView f_grid, | |||
| 8296 | ConstVectorView abs_p, | |||
| 8297 | ConstVectorView abs_t, | |||
| 8298 | ConstVectorView vmr, | |||
| 8299 | const Verbosity& verbosity) | |||
| 8300 | { | |||
| 8301 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 8302 | ||||
| 8303 | // check the model name about consistency | |||
| 8304 | if ((model != "user") && (model != "CKD222")) | |||
| 8305 | { | |||
| 8306 | ostringstream os; | |||
| 8307 | os << "!!ERROR!!\n" | |||
| 8308 | << "CKDv2.2.2 H2O foreign continuum:\n" | |||
| 8309 | << "INPUT model name is: " << model << ".\n" | |||
| 8310 | << "VALID model names are user and CKD222\n"; | |||
| 8311 | throw runtime_error(os.str()); | |||
| 8312 | } | |||
| 8313 | ||||
| 8314 | ||||
| 8315 | // scaling factor of the foreign H2O cont. absorption | |||
| 8316 | Numeric ScalingFac = 1.0000e0; | |||
| 8317 | if ( model == "user" ) | |||
| 8318 | { | |||
| 8319 | ScalingFac = Cin; // input scaling factor of calculated absorption | |||
| 8320 | } | |||
| 8321 | ||||
| 8322 | ||||
| 8323 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 8324 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 8325 | ||||
| 8326 | ||||
| 8327 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 8328 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 8328 , "n_p==abs_t.nelem()") : (void)0); | |||
| 8329 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 8329 , "n_p==vmr.nelem()") : (void)0); | |||
| 8330 | ||||
| 8331 | // Check that dimensions of pxsec are consistent with n_f | |||
| 8332 | // and n_p. It should be [n_f,n_p]: | |||
| 8333 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 8333 , "n_f==pxsec.nrows()") : (void)0); | |||
| 8334 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 8334 , "n_p==pxsec.ncols()") : (void)0); | |||
| 8335 | ||||
| 8336 | ||||
| 8337 | // ************************** CKD stuff ************************************ | |||
| 8338 | ||||
| 8339 | const Numeric xLosmt = 2.686763e19; // [molecules/cm^3] | |||
| 8340 | const Numeric T1 = 273.000e0; | |||
| 8341 | const Numeric TO = 296.000e0; | |||
| 8342 | const Numeric PO = 1013.000e0; | |||
| 8343 | ||||
| 8344 | // CKD2.2.2 foreign H2O continuum correction function parameters | |||
| 8345 | const Numeric HWSQF = 330.000e0 * 330.000e0; | |||
| 8346 | const Numeric BETAF = 8.000e-11; | |||
| 8347 | const Numeric V0F = 1130.000e0; | |||
| 8348 | const Numeric FACTRF = 0.970e0; | |||
| 8349 | ||||
| 8350 | const Numeric V0F2 = 1900.000e0; | |||
| 8351 | const Numeric HWSQF2 = 150.000e0 * 150.000e0; | |||
| 8352 | const Numeric BETA2 = 3.000e-6; | |||
| 8353 | ||||
| 8354 | // wavenumber range where CKD H2O foreign continuum is valid | |||
| 8355 | const Numeric VABS_min = FH2O_ckd_0_v1; // [cm^-1] | |||
| 8356 | const Numeric VABS_max = FH2O_ckd_0_v2; // [cm^-1] | |||
| 8357 | ||||
| 8358 | // It is assumed here that f_grid is monotonically increasing with index! | |||
| 8359 | // In future change this return into a change of the loop over | |||
| 8360 | // the frequency f_grid. n_f_new < n_f | |||
| 8361 | Numeric V1ABS = f_grid[0] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 8362 | Numeric V2ABS = f_grid[n_f-1] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 8363 | if ( (V1ABS < VABS_min) || (V1ABS > VABS_max) || | |||
| 8364 | (V2ABS < VABS_min) || (V2ABS > VABS_max) ) | |||
| 8365 | { | |||
| 8366 | out3 << "WARNING:\n" | |||
| 8367 | << " CKD2.2.2 H2O foreign continuum:\n" | |||
| 8368 | << " input frequency vector exceeds range of model validity\n" | |||
| 8369 | << " " << FH2O_ckd_0_v1 << "<->" << FH2O_ckd_0_v2 << "cm^-1\n"; | |||
| 8370 | } | |||
| 8371 | ||||
| 8372 | ||||
| 8373 | // ---------------------- subroutine FRN296 ------------------------------ | |||
| 8374 | ||||
| 8375 | // retrieve the appropriate array sequence of the foreign continuum | |||
| 8376 | // arrays of the CKD model. | |||
| 8377 | Numeric DVC = FH2O_ckd_0_dv; | |||
| 8378 | Numeric V1C = V1ABS - DVC; | |||
| 8379 | Numeric V2C = V2ABS + DVC; | |||
| 8380 | ||||
| 8381 | int I1 = (int) ((V1C-FH2O_ckd_0_v1) / FH2O_ckd_0_dv); | |||
| 8382 | if (V1C < FH2O_ckd_0_v1) I1 = -1; | |||
| 8383 | V1C = FH2O_ckd_0_v1 + (FH2O_ckd_0_dv * (Numeric)I1); | |||
| 8384 | ||||
| 8385 | int I2 = (int) ((V2C-FH2O_ckd_0_v1) / FH2O_ckd_0_dv); | |||
| 8386 | ||||
| 8387 | int NPTC = I2-I1+3; | |||
| 8388 | if (NPTC > FH2O_ckd_0_npt) NPTC = FH2O_ckd_0_npt+1; | |||
| 8389 | ||||
| 8390 | V2C = V1C + FH2O_ckd_0_dv * (Numeric)(NPTC-1); | |||
| 8391 | ||||
| 8392 | if (NPTC < 1) | |||
| 8393 | { | |||
| 8394 | out3 << "WARNING:\n" | |||
| 8395 | << " CKD2.2.2 H2O foreign continuum:\n" | |||
| 8396 | << " no elements of internal continuum coefficients could be found for the\n" | |||
| 8397 | << " input frequency range.\n" | |||
| 8398 | << " Leave the function without calculating the absorption."; | |||
| 8399 | return; | |||
| 8400 | } | |||
| 8401 | ||||
| 8402 | Numeric FH2OT0[NPTC+addF77fields]; // [cm^3/molecules] | |||
| 8403 | ||||
| 8404 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 8405 | { | |||
| 8406 | Index I = I1+J; | |||
| 8407 | if ( (I < 1) || (I > FH2O_ckd_0_npt) ) | |||
| 8408 | { | |||
| 8409 | FH2OT0[J] = 0.0e0; | |||
| 8410 | } | |||
| 8411 | else | |||
| 8412 | { | |||
| 8413 | FH2OT0[J] = FH2O_ckd_0[I]; | |||
| 8414 | } | |||
| 8415 | } | |||
| 8416 | ||||
| 8417 | // ---------------------- subroutine FRN296 ------------------------------ | |||
| 8418 | ||||
| 8419 | Numeric VF2 = 0.000e0; | |||
| 8420 | Numeric VF4 = 0.000e0; | |||
| 8421 | Numeric VF6 = 0.000e0; | |||
| 8422 | Numeric FSCAL = 0.000e0; | |||
| 8423 | Numeric FH2O = 0.000e0; | |||
| 8424 | ||||
| 8425 | // Loop pressure/temperature: | |||
| 8426 | for ( Index i = 0 ; i < n_p ; ++i ) | |||
| 8427 | { | |||
| 8428 | ||||
| 8429 | // atmospheric state parameters | |||
| 8430 | Numeric Tave = abs_t[i]; // [K] | |||
| 8431 | Numeric Pave = (abs_p[i]*1.000e-2); // [hPa] | |||
| 8432 | Numeric vmrh2o = vmr[i]; // [1] | |||
| 8433 | // FIXME Numeric ph2o = vmrh2o * Pave; // [hPa] | |||
| 8434 | Numeric PFRGN = (Pave/PO) * (1.00000e0 - vmrh2o); // dry air pressure [hPa] | |||
| 8435 | Numeric RFRGN = PFRGN * (TO/Tave); // [hPa] | |||
| 8436 | Numeric WTOT = xLosmt * (Pave/PO) * (T1/Tave); // [molecules/cm^2] | |||
| 8437 | // FIXME Numeric W1 = vmrh2o * WTOT; // [molecules/cm^2] | |||
| 8438 | Numeric XKT = Tave / 1.4387752; // = (T*k_B) / (h*c) | |||
| 8439 | ||||
| 8440 | // Molecular cross section calculated by CKD. | |||
| 8441 | // The cross sectionis calculated on the predefined | |||
| 8442 | // CKD wavenumber grid. | |||
| 8443 | Numeric k[NPTC+addF77fields]; // [1/cm] | |||
| 8444 | k[0] = 0.00e0; // not used array field | |||
| 8445 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 8446 | { | |||
| 8447 | Numeric VJ = V1C + (DVC * (Numeric)(J-1)); | |||
| 8448 | ||||
| 8449 | // CORRECTION TO FOREIGN CONTINUUM | |||
| 8450 | VF2 = (VJ-V0F) * (VJ-V0F); | |||
| 8451 | VF6 = VF2 * VF2 * VF2; | |||
| 8452 | FSCAL = (1.000e0 - FACTRF*(HWSQF/(VF2+(BETAF*VF6)+HWSQF))); | |||
| 8453 | ||||
| 8454 | VF2 = (VJ-V0F2) * (VJ-V0F2); | |||
| 8455 | VF4 = VF2 * VF2; | |||
| 8456 | FSCAL = FSCAL * (1.000e0 - 0.600e0*(HWSQF2/(VF2 + BETA2*VF4 + HWSQF2))); | |||
| 8457 | ||||
| 8458 | FH2O = FH2OT0[J] * FSCAL; | |||
| 8459 | ||||
| 8460 | // CKD cross section with radiative field [1/cm] | |||
| 8461 | // The VMRH2O will be multiplied in abs_coefCalc, hence WTOT and not W1 | |||
| 8462 | // as multiplicative term | |||
| 8463 | k[J] = WTOT * RFRGN * (FH2O*1.000e-20) * RADFN_FUN(VJ,XKT); | |||
| 8464 | ||||
| 8465 | } | |||
| 8466 | ||||
| 8467 | ||||
| 8468 | // Loop input frequency array. The previously calculated cross section | |||
| 8469 | // has therefore to be interpolated on the input frequencies. | |||
| 8470 | for ( Index s = 0 ; s < n_f ; ++s ) | |||
| 8471 | { | |||
| 8472 | // calculate the associated wave number (= 1/wavelength) | |||
| 8473 | Numeric V = f_grid[s] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 8474 | if ( (V > 0.000e0) && (V < VABS_max) ) | |||
| 8475 | { | |||
| 8476 | // arts CKD2.2.2 foreign H2O continuum cross section [1/m] | |||
| 8477 | // interpolate the k vector on the f_grid grid | |||
| 8478 | // The factor 100 comes from the conversion from (1/cm) to (1/m) | |||
| 8479 | // of the abs. coeff. | |||
| 8480 | pxsec(s,i) += ScalingFac * 1.000e2 * XINT_FUN(V1C,V2C,DVC,k, | |||
| 8481 | NPTC+addF77fields,V); | |||
| 8482 | } | |||
| 8483 | } | |||
| 8484 | } | |||
| 8485 | ||||
| 8486 | } | |||
| 8487 | ||||
| 8488 | ||||
| 8489 | // ================================================================================= | |||
| 8490 | ||||
| 8491 | //! CKD version 2.4.2 H2O self continuum absorption model | |||
| 8492 | /*! | |||
| 8493 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 8494 | H2O self continuum according to CKD_2_4_2 [1/m] | |||
| 8495 | \param Cin strength scaling factor [1] | |||
| 8496 | \param model allows user defined input parameter set | |||
| 8497 | (Cin)<br> | |||
| 8498 | or choice of | |||
| 8499 | pre-defined parameters of specific models (see note below). | |||
| 8500 | \param f_grid predefined frequency grid [Hz] | |||
| 8501 | \param abs_p predefined pressure grid [Pa] | |||
| 8502 | \param abs_t predefined temperature grid [K] | |||
| 8503 | \param vmr H2O volume mixing ratio profile [1] | |||
| 8504 | ||||
| 8505 | \note This absorption model is taken from the FORTRAN77 code of | |||
| 8506 | CKD version 2.4.2 written by<br> | |||
| 8507 | Atmospheric and Environmental Research Inc. (AER),<br> | |||
| 8508 | Radiation and Climate Group<br> | |||
| 8509 | 131 Hartwell Avenue<br> | |||
| 8510 | Lexington, MA 02421, USA<br> | |||
| 8511 | http://www.rtweb.aer.com/continuum_frame.html | |||
| 8512 | ||||
| 8513 | \author Thomas Kuhn | |||
| 8514 | \date 2002-30-10 | |||
| 8515 | */ | |||
| 8516 | void CKD_242_self_h2o (MatrixView pxsec, | |||
| 8517 | const Numeric Cin, | |||
| 8518 | const String& model, | |||
| 8519 | ConstVectorView f_grid, | |||
| 8520 | ConstVectorView abs_p, | |||
| 8521 | ConstVectorView abs_t, | |||
| 8522 | ConstVectorView vmr, | |||
| 8523 | const Verbosity& verbosity) | |||
| 8524 | { | |||
| 8525 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 8526 | ||||
| 8527 | // check the model name about consistency | |||
| 8528 | if ((model != "user") && (model != "CKD242")) | |||
| 8529 | { | |||
| 8530 | ostringstream os; | |||
| 8531 | os << "!!ERROR!!\n" | |||
| 8532 | << "CKDv2.4.2 H2O self continuum:\n" | |||
| 8533 | << "INPUT model name is: " << model << ".\n" | |||
| 8534 | << "VALID model names are user and CKD242\n"; | |||
| 8535 | throw runtime_error(os.str()); | |||
| 8536 | } | |||
| 8537 | ||||
| 8538 | ||||
| 8539 | // scaling factor of the self H2O cont. absorption | |||
| 8540 | Numeric ScalingFac = 1.0000e0; | |||
| 8541 | if ( model == "user" ) | |||
| 8542 | { | |||
| 8543 | ScalingFac = Cin; // input scaling factor of calculated absorption | |||
| 8544 | } | |||
| 8545 | ||||
| 8546 | ||||
| 8547 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 8548 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 8549 | ||||
| 8550 | ||||
| 8551 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 8552 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 8552 , "n_p==abs_t.nelem()") : (void)0); | |||
| 8553 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 8553 , "n_p==vmr.nelem()") : (void)0); | |||
| 8554 | ||||
| 8555 | // Check that dimensions of pxsec are consistent with n_f | |||
| 8556 | // and n_p. It should be [n_f,n_p]: | |||
| 8557 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 8557 , "n_f==pxsec.nrows()") : (void)0); | |||
| 8558 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 8558 , "n_p==pxsec.ncols()") : (void)0); | |||
| 8559 | ||||
| 8560 | ||||
| 8561 | // ************************** CKD stuff ************************************ | |||
| 8562 | ||||
| 8563 | const Numeric xLosmt = 2.686763e19; // [molecules/cm^3] | |||
| 8564 | // FIXME const Numeric T1 = 273.0e0; | |||
| 8565 | const Numeric TO = 296.0e0; | |||
| 8566 | const Numeric PO = 1013.0e0; | |||
| 8567 | ||||
| 8568 | // CKD2.4.2 specific correction functions | |||
| 8569 | const Numeric V0S1 = 0.000e+00; | |||
| 8570 | const Numeric HWSQ1 = (1.000e+02 * 1.000e+02); | |||
| 8571 | const Numeric BETAS1 = 1.000e-04; | |||
| 8572 | const Numeric FACTRS1 = 0.688e+00; | |||
| 8573 | ||||
| 8574 | const Numeric V0S2 = 1.050e+03; | |||
| 8575 | const Numeric HWSQ2 = (2.000e+02 * 2.000e+02); | |||
| 8576 | const Numeric FACTRS2 = -0.2333e+00; | |||
| 8577 | ||||
| 8578 | const Numeric V0S3 = 1.310e+03; | |||
| 8579 | const Numeric HWSQ3 = (1.200e+02 * 1.200e+02); | |||
| 8580 | const Numeric BETAS3 = 5.000e-06; | |||
| 8581 | const Numeric FACTRS3 = -0.150e+00; | |||
| 8582 | ||||
| 8583 | const Numeric XFAC[51] = { | |||
| 8584 | 1.00000,1.01792,1.03767,1.05749,1.07730,1.09708, | |||
| 8585 | 1.10489,1.11268,1.12047,1.12822,1.13597,1.14367, | |||
| 8586 | 1.15135,1.15904,1.16669,1.17431,1.18786,1.20134, | |||
| 8587 | 1.21479,1.22821,1.24158,1.26580,1.28991,1.28295, | |||
| 8588 | 1.27600,1.26896,1.25550,1.24213,1.22879,1.21560, | |||
| 8589 | 1.20230,1.18162,1.16112,1.14063,1.12016,1.10195, | |||
| 8590 | 1.09207,1.08622,1.08105,1.07765,1.07398,1.06620, | |||
| 8591 | 1.05791,1.04905,1.03976,1.02981,1.00985,1.00000, | |||
| 8592 | 1.00000,1.00000,1.00000}; | |||
| 8593 | ||||
| 8594 | // wavenumber range where CKD H2O self continuum is valid | |||
| 8595 | const Numeric VABS_min = SL260_ckd_0_v1; // [cm^-1] | |||
| 8596 | const Numeric VABS_max = SL260_ckd_0_v2; // [cm^-1] | |||
| 8597 | ||||
| 8598 | ||||
| 8599 | // It is assumed here that f_grid is monotonically increasing with index! | |||
| 8600 | // In future change this return into a change of the loop over | |||
| 8601 | // the frequency f_grid. n_f_new < n_f | |||
| 8602 | Numeric V1ABS = f_grid[0] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 8603 | Numeric V2ABS = f_grid[n_f-1] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 8604 | if ( (V1ABS < VABS_min) || (V1ABS > VABS_max) || | |||
| 8605 | (V2ABS < VABS_min) || (V2ABS > VABS_max) ) | |||
| 8606 | { | |||
| 8607 | out3 << "WARNING:\n" | |||
| 8608 | << " CKD2.4.2 H2O self continuum:\n" | |||
| 8609 | << " input frequency vector exceeds range of model validity\n" | |||
| 8610 | << " " << SL296_ckd_0_v1 << "<->" << SL296_ckd_0_v2 << "cm^-1\n"; | |||
| 8611 | } | |||
| 8612 | ||||
| 8613 | ||||
| 8614 | // ------------------- subroutine SL296/SL260 ---------------------------- | |||
| 8615 | ||||
| 8616 | if (SL296_ckd_0_v1 != SL260_ckd_0_v1) | |||
| 8617 | { | |||
| 8618 | ostringstream os; | |||
| 8619 | os << "!!ERROR!!\n" | |||
| 8620 | << "CKD2.4.2 H2O self continuum:\n" | |||
| 8621 | << "parameter V1 not the same for different ref. temperatures.\n"; | |||
| 8622 | throw runtime_error(os.str()); | |||
| 8623 | } | |||
| 8624 | if (SL296_ckd_0_v2 != SL260_ckd_0_v2) | |||
| 8625 | { | |||
| 8626 | ostringstream os; | |||
| 8627 | os << "!!ERROR!!\n" | |||
| 8628 | << "CKD2.4.2 H2O self continuum:\n" | |||
| 8629 | << "parameter V2 not the same for different ref. temperatures.\n"; | |||
| 8630 | throw runtime_error(os.str()); | |||
| 8631 | } | |||
| 8632 | if (SL296_ckd_0_dv != SL260_ckd_0_dv) | |||
| 8633 | { | |||
| 8634 | ostringstream os; | |||
| 8635 | os << "!!ERROR!!\n" | |||
| 8636 | << "CKD2.4.2 H2O self continuum:\n" | |||
| 8637 | << "parameter DV not the same for different ref. temperatures.\n"; | |||
| 8638 | throw runtime_error(os.str()); | |||
| 8639 | } | |||
| 8640 | if (SL296_ckd_0_npt != SL260_ckd_0_npt) | |||
| 8641 | { | |||
| 8642 | ostringstream os; | |||
| 8643 | os << "!!ERROR!!\n" | |||
| 8644 | << "CKD2.4.2 H2O self continuum:\n" | |||
| 8645 | << "parameter NPT not the same for different ref. temperatures.\n"; | |||
| 8646 | throw runtime_error(os.str()); | |||
| 8647 | } | |||
| 8648 | ||||
| 8649 | // retrieve the appropriate array sequence of the self continuum | |||
| 8650 | // arrays of the CKD model. | |||
| 8651 | Numeric DVC = SL296_ckd_0_dv; | |||
| 8652 | Numeric V1C = V1ABS - DVC; | |||
| 8653 | Numeric V2C = V2ABS + DVC; | |||
| 8654 | ||||
| 8655 | int I1 = (int) ((V1C-SL296_ckd_0_v1) / SL296_ckd_0_dv); | |||
| 8656 | if (V1C < SL296_ckd_0_v1) I1 = -1; | |||
| 8657 | V1C = SL296_ckd_0_v1 + (SL296_ckd_0_dv * (Numeric)I1); | |||
| 8658 | ||||
| 8659 | int I2 = (int) ((V2C-SL296_ckd_0_v1) / SL296_ckd_0_dv); | |||
| 8660 | ||||
| 8661 | int NPTC = I2-I1+3; | |||
| 8662 | if (NPTC > SL296_ckd_0_npt) NPTC = SL296_ckd_0_npt+1; | |||
| 8663 | ||||
| 8664 | V2C = V1C + SL296_ckd_0_dv * (Numeric)(NPTC-1); | |||
| 8665 | ||||
| 8666 | if (NPTC < 1) | |||
| 8667 | { | |||
| 8668 | out3 << "WARNING:\n" | |||
| 8669 | << " CKDv2.4.2 H2O self continuum:\n" | |||
| 8670 | << " no elements of internal continuum coefficients could be found for the\n" | |||
| 8671 | << " input frequency range.\n" | |||
| 8672 | << " Leave the function without calculating the absorption."; | |||
| 8673 | return; | |||
| 8674 | } | |||
| 8675 | ||||
| 8676 | Numeric SH2OT0[NPTC+addF77fields]; // [cm^3/molecules] | |||
| 8677 | Numeric SH2OT1[NPTC+addF77fields]; // [cm^3/molecules] | |||
| 8678 | ||||
| 8679 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 8680 | { | |||
| 8681 | Index I = I1+J; | |||
| 8682 | if ( (I < 1) || (I > SL296_ckd_0_npt) ) | |||
| 8683 | { | |||
| 8684 | SH2OT0[J] = 0.0e0; // at T=296 K | |||
| 8685 | SH2OT1[J] = 0.0e0; // at T=260 K | |||
| 8686 | } | |||
| 8687 | else | |||
| 8688 | { | |||
| 8689 | SH2OT0[J] = SL296_ckd_0[I]; // at T=296 K | |||
| 8690 | SH2OT1[J] = SL260_ckd_0[I]; // at T=260 K | |||
| 8691 | } | |||
| 8692 | } | |||
| 8693 | ||||
| 8694 | // ------------------- subroutine SL296/SL260 ---------------------------- | |||
| 8695 | ||||
| 8696 | Numeric SFAC = 1.00e0; | |||
| 8697 | Numeric VS2 = 0.00e0; | |||
| 8698 | Numeric VS4 = 0.00e0; | |||
| 8699 | ||||
| 8700 | // Loop pressure/temperature: | |||
| 8701 | for ( Index i = 0 ; i < n_p ; ++i ) | |||
| 8702 | { | |||
| 8703 | ||||
| 8704 | // atmospheric state parameters | |||
| 8705 | Numeric Tave = abs_t[i]; // [K] | |||
| 8706 | Numeric Pave = (abs_p[i]*1.000e-2); // [hPa] | |||
| 8707 | Numeric Patm = Pave/PO; // [1] | |||
| 8708 | Numeric vmrh2o = vmr[i]; // [1] | |||
| 8709 | // FIXME Numeric Ph2o = Patm * vmrh2o; // [1] | |||
| 8710 | // second vmr in abs_coefCalc multiplied | |||
| 8711 | Numeric Rh2o = Patm * (TO/Tave); // [1] | |||
| 8712 | Numeric Tfac = (Tave-TO)/(260.0-TO); // [1] | |||
| 8713 | Numeric WTOT = xLosmt * (Pave/1.013000e3) * (2.7300e2/Tave); // [molecules/cm^2] | |||
| 8714 | Numeric W1 = vmrh2o * WTOT; // [molecules/cm^2] | |||
| 8715 | Numeric XKT = Tave / 1.4387752e0; // = (T*k_B)/(h*c) | |||
| 8716 | ||||
| 8717 | // Molecular cross section calculated by CKD. | |||
| 8718 | // The cross sectionis calculated on the predefined | |||
| 8719 | // CKD wavenumber grid. | |||
| 8720 | Numeric k[NPTC+addF77fields]; // [1/cm] | |||
| 8721 | k[0] = 0.00e0; // not used array field | |||
| 8722 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 8723 | { | |||
| 8724 | Numeric VJ = V1C + (DVC * (Numeric)(J-1)); | |||
| 8725 | Numeric SH2O = 0.0e0; | |||
| 8726 | if (SH2OT0[J] > 0.0e0) | |||
| 8727 | { | |||
| 8728 | SH2O = SH2OT0[J] * pow( (SH2OT1[J]/SH2OT0[J]), Tfac ); | |||
| 8729 | SFAC = 1.00e0; | |||
| 8730 | ||||
| 8731 | if ( (VJ >= 700.0e0) && (VJ <= 1200.0e0) ) | |||
| 8732 | { | |||
| 8733 | int JFAC = (int)((VJ - 700.0e0)/10.0e0 + 0.00001e0); | |||
| 8734 | if ( (JFAC >= 0) && (JFAC <= 50) ) | |||
| 8735 | SFAC = XFAC[JFAC]; | |||
| 8736 | } | |||
| 8737 | ||||
| 8738 | // --------------------------------------------------------- | |||
| 8739 | // Correction to self continuum (1 SEPT 85); factor of | |||
| 8740 | // 0.78 at 1000 and ....... | |||
| 8741 | ||||
| 8742 | VS2 = (VJ-V0S1) * (VJ-V0S1); | |||
| 8743 | VS4 = VS2*VS2; | |||
| 8744 | SFAC = SFAC * | |||
| 8745 | (1.000e0 + FACTRS1*(HWSQ1/((VJ*VJ)+(BETAS1*VS4)+HWSQ1))); | |||
| 8746 | ||||
| 8747 | VS2 = (VJ-V0S2) * (VJ-V0S2); | |||
| 8748 | SFAC = SFAC * | |||
| 8749 | (1.000e0 + FACTRS2*(HWSQ2/(VS2+HWSQ2))); | |||
| 8750 | ||||
| 8751 | VS2 = (VJ-V0S3) * (VJ-V0S3); | |||
| 8752 | VS4 = VS2*VS2; | |||
| 8753 | SFAC = SFAC * | |||
| 8754 | (1.000e0 + FACTRS3*(HWSQ3/(VS2+(BETAS3*VS4)+HWSQ3))); | |||
| 8755 | ||||
| 8756 | SH2O = SFAC * SH2O; | |||
| 8757 | } | |||
| 8758 | ||||
| 8759 | // CKD cross section with radiative field [1/cm] | |||
| 8760 | // The VMRH2O will be multiplied in abs_coefCalc, hence Rh2o does not contain | |||
| 8761 | // VMRH2O as multiplicative term | |||
| 8762 | k[J] = W1 * Rh2o * (SH2O*1.000e-20) * RADFN_FUN(VJ,XKT); | |||
| 8763 | ||||
| 8764 | } | |||
| 8765 | ||||
| 8766 | ||||
| 8767 | // Loop input frequency array. The previously calculated cross section | |||
| 8768 | // has therefore to be interpolated on the input frequencies. | |||
| 8769 | for ( Index s = 0 ; s < n_f ; ++s ) | |||
| 8770 | { | |||
| 8771 | // calculate the associated wave number (= 1/wavelength) | |||
| 8772 | Numeric V = f_grid[s] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 8773 | if ( (V >= 0.000e0) && (V < SL296_ckd_0_v2) ) | |||
| 8774 | { | |||
| 8775 | // arts cross section [1/m] | |||
| 8776 | // interpolate the k vector on the f_grid grid | |||
| 8777 | // The factor 100 comes from the conversion from 1/cm to 1/m for | |||
| 8778 | // the absorption coefficient | |||
| 8779 | pxsec(s,i) += ScalingFac * 1.000e2 * XINT_FUN(V1C,V2C,DVC,k, | |||
| 8780 | NPTC+addF77fields,V); | |||
| 8781 | } | |||
| 8782 | } | |||
| 8783 | } | |||
| 8784 | ||||
| 8785 | } | |||
| 8786 | ||||
| 8787 | ||||
| 8788 | // ================================================================================= | |||
| 8789 | ||||
| 8790 | //! CKD version 2.4.2 H2O foreign continuum absorption model | |||
| 8791 | /*! | |||
| 8792 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 8793 | H2O foreign continuum according to CKDv.2.4.2 [1/m] | |||
| 8794 | \param Cin strength scaling factor [1] | |||
| 8795 | \param model allows user defined input parameter set | |||
| 8796 | (Cin)<br> | |||
| 8797 | or choice of | |||
| 8798 | pre-defined parameters of specific models (see note below). | |||
| 8799 | \param f_grid predefined frequency grid [Hz] | |||
| 8800 | \param abs_p predefined pressure grid [Pa] | |||
| 8801 | \param abs_t predefined temperature grid [K] | |||
| 8802 | \param vmr H2O volume mixing ratio profile [1] | |||
| 8803 | ||||
| 8804 | \note This absorption model is taken from the FORTRAN77 code of | |||
| 8805 | CKD version 2.4.2 written by<br> | |||
| 8806 | Atmospheric and Environmental Research Inc. (AER),<br> | |||
| 8807 | Radiation and Climate Group<br> | |||
| 8808 | 131 Hartwell Avenue<br> | |||
| 8809 | Lexington, MA 02421, USA<br> | |||
| 8810 | http://www.rtweb.aer.com/continuum_frame.html | |||
| 8811 | ||||
| 8812 | \author Thomas Kuhn | |||
| 8813 | \date 2002-28-08 | |||
| 8814 | */ | |||
| 8815 | void CKD_242_foreign_h2o (MatrixView pxsec, | |||
| 8816 | const Numeric Cin, | |||
| 8817 | const String& model, | |||
| 8818 | ConstVectorView f_grid, | |||
| 8819 | ConstVectorView abs_p, | |||
| 8820 | ConstVectorView abs_t, | |||
| 8821 | ConstVectorView vmr, | |||
| 8822 | const Verbosity& verbosity) | |||
| 8823 | { | |||
| 8824 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 8825 | ||||
| 8826 | // check the model name about consistency | |||
| 8827 | if ((model != "user") && (model != "CKD242")) | |||
| 8828 | { | |||
| 8829 | ostringstream os; | |||
| 8830 | os << "!!ERROR!!\n" | |||
| 8831 | << "CKDv2.4.2 H2O foreign continuum:\n" | |||
| 8832 | << "INPUT model name is: " << model << ".\n" | |||
| 8833 | << "VALID model names are user and CKD242\n"; | |||
| 8834 | throw runtime_error(os.str()); | |||
| 8835 | } | |||
| 8836 | ||||
| 8837 | ||||
| 8838 | // scaling factor of the foreign H2O cont. absorption | |||
| 8839 | Numeric ScalingFac = 1.0000e0; | |||
| 8840 | if ( model == "user" ) | |||
| 8841 | { | |||
| 8842 | ScalingFac = Cin; // input scaling factor of calculated absorption | |||
| 8843 | } | |||
| 8844 | ||||
| 8845 | ||||
| 8846 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 8847 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 8848 | ||||
| 8849 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 8850 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 8850 , "n_p==abs_t.nelem()") : (void)0); | |||
| 8851 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 8851 , "n_p==vmr.nelem()") : (void)0); | |||
| 8852 | ||||
| 8853 | // Check that dimensions of pxsec are consistent with n_f | |||
| 8854 | // and n_p. It should be [n_f,n_p]: | |||
| 8855 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 8855 , "n_f==pxsec.nrows()") : (void)0); | |||
| 8856 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 8856 , "n_p==pxsec.ncols()") : (void)0); | |||
| 8857 | ||||
| 8858 | ||||
| 8859 | // ************************** CKD stuff ************************************ | |||
| 8860 | ||||
| 8861 | const Numeric xLosmt = 2.686763e19; // [molecules/cm^3] | |||
| 8862 | const Numeric T1 = 273.0e0; | |||
| 8863 | const Numeric TO = 296.0e0; | |||
| 8864 | const Numeric PO = 1013.0e0; | |||
| 8865 | ||||
| 8866 | // CKD2.4.2 foreign H2O continuum correction function parameters | |||
| 8867 | const Numeric V0F1 = 350.000e0; | |||
| 8868 | const Numeric HWSQF1 = 200.000e0 * 200.000e0; | |||
| 8869 | const Numeric BETAF1 = 5.000e-9 ; | |||
| 8870 | const Numeric FACTRF1 = -0.700e0; | |||
| 8871 | ||||
| 8872 | const Numeric V0F1a = 630.000e0; | |||
| 8873 | const Numeric HWSQF1a = 65.000e0*65.000e0; | |||
| 8874 | const Numeric BETAF1a = 2.000e-08 ; | |||
| 8875 | const Numeric FACTRF1a = 0.750e0; | |||
| 8876 | ||||
| 8877 | const Numeric V0F2 = 1130.000e0; | |||
| 8878 | const Numeric HWSQF2 = 330.000e0 * 330.000e0; | |||
| 8879 | const Numeric BETAF2 = 8.000e-11; | |||
| 8880 | const Numeric FACTRF2 = -0.970e0; | |||
| 8881 | ||||
| 8882 | const Numeric V0F3 = 1975.000e0; | |||
| 8883 | const Numeric HWSQF3 = 250.000e0 * 250.000e0; | |||
| 8884 | const Numeric BETAF3 = 5.000e-06; | |||
| 8885 | const Numeric FACTRF3 = -0.650e0; | |||
| 8886 | ||||
| 8887 | // wavenumber range where CKD H2O foreign continuum is valid | |||
| 8888 | const Numeric VABS_min = FH2O_ckd_0_v1; // [cm^-1] | |||
| 8889 | const Numeric VABS_max = FH2O_ckd_0_v2; // [cm^-1] | |||
| 8890 | ||||
| 8891 | ||||
| 8892 | // It is assumed here that f_grid is monotonically increasing with index! | |||
| 8893 | // In future change this return into a change of the loop over | |||
| 8894 | // the frequency f_grid. n_f_new < n_f | |||
| 8895 | Numeric V1ABS = f_grid[0] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 8896 | Numeric V2ABS = f_grid[n_f-1] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 8897 | if ( (V1ABS < VABS_min) || (V1ABS > VABS_max) || | |||
| 8898 | (V2ABS < VABS_min) || (V2ABS > VABS_max) ) | |||
| 8899 | { | |||
| 8900 | out3 << "WARNING:\n" | |||
| 8901 | << " CKDv2.4.2 H2O foreign continuum:\n" | |||
| 8902 | << " input frequency vector exceeds range of model validity\n" | |||
| 8903 | << " " << FH2O_ckd_0_v1 << "<->" << FH2O_ckd_0_v2 << "cm^-1\n"; | |||
| 8904 | } | |||
| 8905 | ||||
| 8906 | ||||
| 8907 | // ---------------------- subroutine FRN296 ------------------------------ | |||
| 8908 | ||||
| 8909 | // retrieve the appropriate array sequence of the foreign continuum | |||
| 8910 | // arrays of the CKD model. | |||
| 8911 | Numeric DVC = FH2O_ckd_0_dv; | |||
| 8912 | Numeric V1C = V1ABS - DVC; | |||
| 8913 | Numeric V2C = V2ABS + DVC; | |||
| 8914 | ||||
| 8915 | int I1 = (int) ((V1C-FH2O_ckd_0_v1) / FH2O_ckd_0_dv); | |||
| 8916 | if (V1C < FH2O_ckd_0_v1) I1 = -1; | |||
| 8917 | V1C = FH2O_ckd_0_v1 + (FH2O_ckd_0_dv * (Numeric)I1); | |||
| 8918 | ||||
| 8919 | int I2 = (int) ((V2C-FH2O_ckd_0_v1) / FH2O_ckd_0_dv); | |||
| 8920 | ||||
| 8921 | int NPTC = I2-I1+3; | |||
| 8922 | if (NPTC > FH2O_ckd_0_npt) NPTC = FH2O_ckd_0_npt+1; | |||
| 8923 | ||||
| 8924 | V2C = V1C + FH2O_ckd_0_dv * (Numeric)(NPTC-1); | |||
| 8925 | ||||
| 8926 | if (NPTC < 1) | |||
| 8927 | { | |||
| 8928 | out3 << "WARNING:\n" | |||
| 8929 | << " CKDv2.4.2 H2O foreign continuum:\n" | |||
| 8930 | << " no elements of internal continuum coefficients could be found for the\n" | |||
| 8931 | << " input frequency range.\n" | |||
| 8932 | << " Leave the function without calculating the absorption."; | |||
| 8933 | return; | |||
| 8934 | } | |||
| 8935 | ||||
| 8936 | Numeric FH2OT0[NPTC+addF77fields]; // [cm^3/molecules] | |||
| 8937 | ||||
| 8938 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 8939 | { | |||
| 8940 | Index I = I1+J; | |||
| 8941 | if ( (I < 1) || (I > FH2O_ckd_0_npt) ) | |||
| 8942 | { | |||
| 8943 | FH2OT0[J] = 0.0e0; | |||
| 8944 | } | |||
| 8945 | else | |||
| 8946 | { | |||
| 8947 | FH2OT0[J] = FH2O_ckd_0[I]; | |||
| 8948 | } | |||
| 8949 | } | |||
| 8950 | ||||
| 8951 | // ---------------------- subroutine FRN296 ------------------------------ | |||
| 8952 | ||||
| 8953 | Numeric VF2 = 0.000e0; | |||
| 8954 | Numeric VF4 = 0.000e0; | |||
| 8955 | Numeric VF6 = 0.000e0; | |||
| 8956 | Numeric FSCAL = 0.000e0; | |||
| 8957 | Numeric FH2O = 0.000e0; | |||
| 8958 | ||||
| 8959 | // Loop pressure/temperature: | |||
| 8960 | for ( Index i = 0 ; i < n_p ; ++i ) | |||
| 8961 | { | |||
| 8962 | ||||
| 8963 | // atmospheric state parameters | |||
| 8964 | Numeric Tave = abs_t[i]; // [K] | |||
| 8965 | Numeric Pave = (abs_p[i]*1.000e-2); // [hPa] | |||
| 8966 | Numeric vmrh2o = vmr[i]; // [1] | |||
| 8967 | // FIXME Numeric ph2o = vmrh2o * Pave; // [hPa] | |||
| 8968 | Numeric PFRGN = (Pave/PO) * (1.00000e0 - vmrh2o); // dry air pressure [hPa] | |||
| 8969 | Numeric RFRGN = PFRGN * (TO/Tave); // [hPa] | |||
| 8970 | Numeric WTOT = xLosmt * (Pave/PO) * (T1/Tave); // [molecules/cm^2] | |||
| 8971 | // FIXME Numeric W1 = vmrh2o * WTOT; // [molecules/cm^2] | |||
| 8972 | Numeric XKT = Tave / 1.4387752; // = (T*k_B) / (h*c) | |||
| 8973 | ||||
| 8974 | // Molecular cross section calculated by CKD. | |||
| 8975 | // The cross sectionis calculated on the predefined | |||
| 8976 | // CKD wavenumber grid. | |||
| 8977 | Numeric k[NPTC+addF77fields]; // [1/cm] | |||
| 8978 | k[0] = 0.00e0; // not used array field | |||
| 8979 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 8980 | { | |||
| 8981 | Numeric VJ = V1C + (DVC * (Numeric)(J-1)); | |||
| 8982 | ||||
| 8983 | // CORRECTION TO FOREIGN CONTINUUM | |||
| 8984 | VF2 = (VJ-V0F1) * (VJ-V0F1); | |||
| 8985 | VF6 = VF2 * VF2 * VF2; | |||
| 8986 | FSCAL = (1.000e0 + FACTRF1*(HWSQF1/(VF2+(BETAF1*VF6)+HWSQF1))); | |||
| 8987 | ||||
| 8988 | VF2 = (VJ-V0F1a) * (VJ-V0F1a); | |||
| 8989 | VF6 = VF2 * VF2 * VF2; | |||
| 8990 | FSCAL = FSCAL * | |||
| 8991 | (1.000e0 + FACTRF1a*(HWSQF1a/(VF2+(BETAF1a*VF6)+HWSQF1a))); | |||
| 8992 | ||||
| 8993 | VF2 = (VJ-V0F2) * (VJ-V0F2); | |||
| 8994 | VF6 = VF2 * VF2 * VF2; | |||
| 8995 | FSCAL = FSCAL * | |||
| 8996 | (1.000e0 + FACTRF2*(HWSQF2/(VF2+(BETAF2*VF6)+HWSQF2))); | |||
| 8997 | ||||
| 8998 | VF2 = (VJ-V0F3) * (VJ-V0F3); | |||
| 8999 | VF4 = VF2 * VF2; | |||
| 9000 | FSCAL = FSCAL * | |||
| 9001 | (1.000e0 + FACTRF3*(HWSQF3/(VF2+BETAF3*VF4+HWSQF3))); | |||
| 9002 | ||||
| 9003 | FH2O = FH2OT0[J] * FSCAL; | |||
| 9004 | ||||
| 9005 | // CKD cross section without radiative field | |||
| 9006 | // The VMRH2O will be multiplied in abs_coefCalc, hence WTOT and not W1 | |||
| 9007 | // as multiplicative term | |||
| 9008 | k[J] = WTOT * RFRGN * (FH2O*1.000e-20) * RADFN_FUN(VJ,XKT); | |||
| 9009 | ||||
| 9010 | } | |||
| 9011 | ||||
| 9012 | ||||
| 9013 | // Loop input frequency array. The previously calculated cross section | |||
| 9014 | // has therefore to be interpolated on the input frequencies. | |||
| 9015 | for ( Index s = 0 ; s < n_f ; ++s ) | |||
| 9016 | { | |||
| 9017 | // calculate the associated wave number (= 1/wavelength) | |||
| 9018 | Numeric V = f_grid[s] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 9019 | if ( (V >= 0.000e0) && (V < VABS_max) ) | |||
| 9020 | { | |||
| 9021 | // arts CKD2.4.2 foreign H2O continuum cross section [1/m] | |||
| 9022 | // interpolate the k vector on the f_grid grid | |||
| 9023 | pxsec(s,i) += ScalingFac * 1.000e2 * XINT_FUN(V1C,V2C,DVC,k, | |||
| 9024 | NPTC+addF77fields,V); | |||
| 9025 | } | |||
| 9026 | } | |||
| 9027 | } | |||
| 9028 | ||||
| 9029 | } | |||
| 9030 | ||||
| 9031 | // ================================================================================= | |||
| 9032 | ||||
| 9033 | //! CKD version MT 1.00 H2O self continuum absorption model | |||
| 9034 | /*! | |||
| 9035 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 9036 | H2O self continuum according to CKD_MT 1.00 [1/m] | |||
| 9037 | \param Cin strength scaling factor [1] | |||
| 9038 | \param model allows user defined input parameter set | |||
| 9039 | (Cin)<br> | |||
| 9040 | or choice of | |||
| 9041 | pre-defined parameters of specific models (see note below). | |||
| 9042 | \param f_grid predefined frequency grid [Hz] | |||
| 9043 | \param abs_p predefined pressure grid [Pa] | |||
| 9044 | \param abs_t predefined temperature grid [K] | |||
| 9045 | \param vmr H2O volume mixing ratio profile [1] | |||
| 9046 | ||||
| 9047 | \note This absorption model is taken from the FORTRAN77 code of | |||
| 9048 | CKD_MT version 1.00 written by<br> | |||
| 9049 | Atmospheric and Environmental Research Inc. (AER),<br> | |||
| 9050 | Radiation and Climate Group<br> | |||
| 9051 | 131 Hartwell Avenue<br> | |||
| 9052 | Lexington, MA 02421, USA<br> | |||
| 9053 | http://www.rtweb.aer.com/continuum_frame.html | |||
| 9054 | ||||
| 9055 | \author Thomas Kuhn | |||
| 9056 | \date 2002-28-08 | |||
| 9057 | */ | |||
| 9058 | void CKD_mt_100_self_h2o (MatrixView pxsec, | |||
| 9059 | const Numeric Cin, | |||
| 9060 | const String& model, | |||
| 9061 | ConstVectorView f_grid, | |||
| 9062 | ConstVectorView abs_p, | |||
| 9063 | ConstVectorView abs_t, | |||
| 9064 | ConstVectorView vmr, | |||
| 9065 | const Verbosity& verbosity) | |||
| 9066 | { | |||
| 9067 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 9068 | ||||
| 9069 | // check the model name about consistency | |||
| 9070 | if ((model != "user") && (model != "CKDMT100")) | |||
| 9071 | { | |||
| 9072 | ostringstream os; | |||
| 9073 | os << "!!ERROR!!\n" | |||
| 9074 | << "CKD_MT1.00 H2O self continuum:\n" | |||
| 9075 | << "INPUT model name is: " << model << ".\n" | |||
| 9076 | << "VALID model names are user and CKDMT100\n"; | |||
| 9077 | throw runtime_error(os.str()); | |||
| 9078 | } | |||
| 9079 | ||||
| 9080 | ||||
| 9081 | // scaling factor of the self H2O cont. absorption | |||
| 9082 | Numeric ScalingFac = 1.0000e0; | |||
| 9083 | if ( model == "user" ) | |||
| 9084 | { | |||
| 9085 | ScalingFac = Cin; // input scaling factor of calculated absorption | |||
| 9086 | } | |||
| 9087 | ||||
| 9088 | ||||
| 9089 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 9090 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 9091 | ||||
| 9092 | ||||
| 9093 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 9094 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 9094 , "n_p==abs_t.nelem()") : (void)0); | |||
| 9095 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 9095 , "n_p==vmr.nelem()") : (void)0); | |||
| 9096 | ||||
| 9097 | // Check that dimensions of pxsec are consistent with n_f | |||
| 9098 | // and n_p. It should be [n_f,n_p]: | |||
| 9099 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 9099 , "n_f==pxsec.nrows()") : (void)0); | |||
| 9100 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 9100 , "n_p==pxsec.ncols()") : (void)0); | |||
| 9101 | ||||
| 9102 | ||||
| 9103 | // ************************** CKD stuff ************************************ | |||
| 9104 | ||||
| 9105 | const Numeric xLosmt = 2.68675e19; // [molecules/cm^3] | |||
| 9106 | // FIXME const Numeric T1 = 273.000e0; // [K] | |||
| 9107 | const Numeric TO = 296.000e0; // [K] | |||
| 9108 | const Numeric PO = 1013.000e0; // [hPa] | |||
| 9109 | ||||
| 9110 | const Numeric XFACREV[15] = | |||
| 9111 | {1.003, 1.009, 1.015, 1.023, 1.029,1.033, | |||
| 9112 | 1.037, 1.039, 1.040, 1.046, 1.036,1.027, | |||
| 9113 | 1.01, 1.002, 1.00}; | |||
| 9114 | ||||
| 9115 | // wavenumber range where CKD H2O self continuum is valid | |||
| 9116 | const Numeric VABS_min = -2.000e1; // [cm^-1] | |||
| 9117 | const Numeric VABS_max = 2.000e4; // [cm^-1] | |||
| 9118 | ||||
| 9119 | ||||
| 9120 | // It is assumed here that f_grid is monotonically increasing with index! | |||
| 9121 | // In future change this return into a change of the loop over | |||
| 9122 | // the frequency f_grid. n_f_new < n_f | |||
| 9123 | Numeric V1ABS = f_grid[0] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 9124 | Numeric V2ABS = f_grid[n_f-1] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 9125 | if ( (V1ABS < VABS_min) || (V1ABS > VABS_max) || | |||
| 9126 | (V2ABS < VABS_min) || (V2ABS > VABS_max) ) | |||
| 9127 | { | |||
| 9128 | out3 << "WARNING:\n" | |||
| 9129 | << " CKD_MT 1.00 H2O self continuum:\n" | |||
| 9130 | << " input frequency vector exceeds range of model validity\n" | |||
| 9131 | << " " << SL296_ckd_mt_100_v1 << "<->" << SL296_ckd_mt_100_v2 << "cm^-1\n"; | |||
| 9132 | } | |||
| 9133 | ||||
| 9134 | ||||
| 9135 | // ------------------- subroutine SL296/SL260 ---------------------------- | |||
| 9136 | ||||
| 9137 | if (SL296_ckd_mt_100_v1 != SL260_ckd_mt_100_v1) | |||
| 9138 | { | |||
| 9139 | ostringstream os; | |||
| 9140 | os << "!!ERROR!!\n" | |||
| 9141 | << "CKD_MT 1.00 H2O self continuum:\n" | |||
| 9142 | << "parameter V1 not the same for different ref. temperatures.\n"; | |||
| 9143 | throw runtime_error(os.str()); | |||
| 9144 | } | |||
| 9145 | if (SL296_ckd_mt_100_v2 != SL260_ckd_mt_100_v2) | |||
| 9146 | { | |||
| 9147 | ostringstream os; | |||
| 9148 | os << "!!ERROR!!\n" | |||
| 9149 | << "CKD_MT 1.00 H2O self continuum:\n" | |||
| 9150 | << "parameter V2 not the same for different ref. temperatures.\n"; | |||
| 9151 | throw runtime_error(os.str()); | |||
| 9152 | } | |||
| 9153 | if (SL296_ckd_mt_100_dv != SL260_ckd_mt_100_dv) | |||
| 9154 | { | |||
| 9155 | ostringstream os; | |||
| 9156 | os << "!!ERROR!!\n" | |||
| 9157 | << "CKD_MT 1.00 H2O self continuum:\n" | |||
| 9158 | << "parameter DV not the same for different ref. temperatures.\n"; | |||
| 9159 | throw runtime_error(os.str()); | |||
| 9160 | } | |||
| 9161 | if (SL296_ckd_mt_100_npt != SL260_ckd_mt_100_npt) | |||
| 9162 | { | |||
| 9163 | ostringstream os; | |||
| 9164 | os << "!!ERROR!!\n" | |||
| 9165 | << "CKD_MT 1.00 H2O self continuum:\n" | |||
| 9166 | << "parameter NPT not the same for different ref. temperatures.\n"; | |||
| 9167 | throw runtime_error(os.str()); | |||
| 9168 | } | |||
| 9169 | ||||
| 9170 | // retrieve the appropriate array sequence of the self continuum | |||
| 9171 | // arrays of the CKD model. | |||
| 9172 | Numeric DVC = SL296_ckd_mt_100_dv; | |||
| 9173 | Numeric V1C = V1ABS - DVC; | |||
| 9174 | Numeric V2C = V2ABS + DVC; | |||
| 9175 | ||||
| 9176 | int I1 = (int) ((V1C-SL296_ckd_mt_100_v1) / SL296_ckd_mt_100_dv); | |||
| 9177 | if (V1C < SL296_ckd_mt_100_v1) I1 = -1; | |||
| 9178 | V1C = SL296_ckd_mt_100_v1 + (SL296_ckd_mt_100_dv * (Numeric)I1); | |||
| 9179 | ||||
| 9180 | int I2 = (int) ((V2C-SL296_ckd_mt_100_v1) / SL296_ckd_mt_100_dv); | |||
| 9181 | ||||
| 9182 | int NPTC = I2-I1+3; | |||
| 9183 | if (NPTC > SL296_ckd_mt_100_npt) NPTC = SL296_ckd_mt_100_npt+1; | |||
| 9184 | ||||
| 9185 | V2C = V1C + SL296_ckd_mt_100_dv * (Numeric)(NPTC-1); | |||
| 9186 | ||||
| 9187 | if (NPTC < 1) | |||
| 9188 | { | |||
| 9189 | out3 << "WARNING:\n" | |||
| 9190 | << " CKD_MT 1.00 H2O self continuum:\n" | |||
| 9191 | << " no elements of internal continuum coefficients could be found for the\n" | |||
| 9192 | << " input frequency range.\n" | |||
| 9193 | << " Leave the function without calculating the absorption."; | |||
| 9194 | return; | |||
| 9195 | } | |||
| 9196 | ||||
| 9197 | Vector SH2OT0(NPTC+addF77fields, 0.); // [cm^3/molecules] | |||
| 9198 | Vector SH2OT1(NPTC+addF77fields, 0.); // [cm^3/molecules] | |||
| 9199 | ||||
| 9200 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 9201 | { | |||
| 9202 | Index I = I1+J; | |||
| 9203 | if ( (I > 0) && (I <= SL296_ckd_mt_100_npt) ) | |||
| 9204 | { | |||
| 9205 | SH2OT0[J] = SL296_ckd_mt_100[I]; // at T=296 K | |||
| 9206 | SH2OT1[J] = SL260_ckd_mt_100[I]; // at T=260 K | |||
| 9207 | } | |||
| 9208 | } | |||
| 9209 | ||||
| 9210 | // ------------------- subroutine SL296/SL260 ---------------------------- | |||
| 9211 | ||||
| 9212 | Numeric SFAC = 1.00e0; | |||
| 9213 | ||||
| 9214 | // Loop pressure/temperature: | |||
| 9215 | for ( Index i = 0 ; i < n_p ; ++i ) | |||
| 9216 | { | |||
| 9217 | ||||
| 9218 | // atmospheric state parameters | |||
| 9219 | Numeric Tave = abs_t[i]; // [K] | |||
| 9220 | Numeric Pave = (abs_p[i]*1.000e-2); // [hPa] | |||
| 9221 | Numeric Patm = Pave/PO; // [1] | |||
| 9222 | Numeric vmrh2o = vmr[i]; // [1] | |||
| 9223 | // FIXME Numeric Ph2o = Patm * vmrh2o; // [1] | |||
| 9224 | // second vmr in abs_coefCalc multiplied | |||
| 9225 | Numeric Rh2o = Patm * (TO/Tave); // [1] | |||
| 9226 | Numeric Tfac = (Tave-TO)/(260.0-TO); // [1] | |||
| 9227 | Numeric WTOT = xLosmt * (Pave/1.013000e3) * (2.7300e2/Tave); // [molecules/cm^2] | |||
| 9228 | Numeric W1 = vmrh2o * WTOT; // [molecules/cm^2] | |||
| 9229 | Numeric XKT = Tave / 1.4387752e0; // = (T*k_B)/(h*c) | |||
| 9230 | ||||
| 9231 | // Molecular cross section calculated by CKD. | |||
| 9232 | // The cross sectionis calculated on the predefined | |||
| 9233 | // CKD wavenumber grid. | |||
| 9234 | Vector k(NPTC+addF77fields, 0.); // [1/cm] | |||
| 9235 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 9236 | { | |||
| 9237 | Numeric VJ = V1C + (DVC * (Numeric)(J-1)); | |||
| 9238 | Numeric SH2O = 0.0e0; | |||
| 9239 | if (SH2OT0[J] > 0.0e0) | |||
| 9240 | { | |||
| 9241 | SH2O = SH2OT0[J] * pow( (SH2OT1[J]/SH2OT0[J]), Tfac ); | |||
| 9242 | SFAC = 1.00e0; | |||
| 9243 | ||||
| 9244 | if ( (VJ >= 820.0e0) && (VJ <= 960.0e0) ) | |||
| 9245 | { | |||
| 9246 | int JFAC = (int)((VJ - 820.0e0)/10.0e0 + 0.00001e0); | |||
| 9247 | if ( (JFAC >= 0) && (JFAC <=14) ) | |||
| 9248 | SFAC = XFACREV[JFAC]; | |||
| 9249 | } | |||
| 9250 | ||||
| 9251 | SH2O = SFAC * SH2O; | |||
| 9252 | } | |||
| 9253 | ||||
| 9254 | // CKD cross section with radiative field [1/cm] | |||
| 9255 | // The VMRH2O will be multiplied in abs_coefCalc, hence Rh2o does not contain | |||
| 9256 | // VMRH2O as multiplicative term | |||
| 9257 | k[J] = W1 * Rh2o * (SH2O*1.000e-20) * RADFN_FUN(VJ,XKT); | |||
| 9258 | ||||
| 9259 | } | |||
| 9260 | ||||
| 9261 | ||||
| 9262 | // Loop input frequency array. The previously calculated cross section | |||
| 9263 | // has therefore to be interpolated on the input frequencies. | |||
| 9264 | for ( Index s = 0 ; s < n_f ; ++s ) | |||
| 9265 | { | |||
| 9266 | // calculate the associated wave number (= 1/wavelength) | |||
| 9267 | Numeric V = f_grid[s] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 9268 | if ( (V > 0.000e0) && (V < SL296_ckd_mt_100_v2) ) | |||
| 9269 | { | |||
| 9270 | // arts cross section [1/m] | |||
| 9271 | // interpolate the k vector on the f_grid grid | |||
| 9272 | // The factor 100 comes from the conversion from 1/cm to 1/m for | |||
| 9273 | // the absorption coefficient | |||
| 9274 | pxsec(s,i) += ScalingFac * 1.000e2 * XINT_FUN(V1C,V2C,DVC,k,V); | |||
| 9275 | } | |||
| 9276 | } | |||
| 9277 | } | |||
| 9278 | ||||
| 9279 | } | |||
| 9280 | ||||
| 9281 | // ================================================================================= | |||
| 9282 | ||||
| 9283 | //! CKD version MT 1.00 H2O foreign continuum absorption model | |||
| 9284 | /*! | |||
| 9285 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 9286 | H2O foreign continuum according to CKD_MT 1.00 [1/m] | |||
| 9287 | \param Cin strength scaling factor [1] | |||
| 9288 | \param model allows user defined input parameter set | |||
| 9289 | (Cin)<br> | |||
| 9290 | or choice of | |||
| 9291 | pre-defined parameters of specific models (see note below). | |||
| 9292 | \param f_grid predefined frequency grid [Hz] | |||
| 9293 | \param abs_p predefined pressure grid [Pa] | |||
| 9294 | \param abs_t predefined temperature grid [K] | |||
| 9295 | \param vmr H2O volume mixing ratio profile [1] | |||
| 9296 | ||||
| 9297 | \note This absorption model is taken from the FORTRAN77 code of | |||
| 9298 | CKD_MT version 1.00 written by<br> | |||
| 9299 | Atmospheric and Environmental Research Inc. (AER),<br> | |||
| 9300 | Radiation and Climate Group<br> | |||
| 9301 | 131 Hartwell Avenue<br> | |||
| 9302 | Lexington, MA 02421, USA<br> | |||
| 9303 | http://www.rtweb.aer.com/continuum_frame.html | |||
| 9304 | ||||
| 9305 | \author Thomas Kuhn | |||
| 9306 | \date 2002-28-08 | |||
| 9307 | */ | |||
| 9308 | void CKD_mt_100_foreign_h2o (MatrixView pxsec, | |||
| 9309 | const Numeric Cin, | |||
| 9310 | const String& model, | |||
| 9311 | ConstVectorView f_grid, | |||
| 9312 | ConstVectorView abs_p, | |||
| 9313 | ConstVectorView abs_t, | |||
| 9314 | ConstVectorView vmr, | |||
| 9315 | const Verbosity& verbosity) | |||
| 9316 | { | |||
| 9317 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 9318 | ||||
| 9319 | // check the model name about consistency | |||
| 9320 | if ((model != "user") && (model != "CKDMT100")) | |||
| 9321 | { | |||
| 9322 | ostringstream os; | |||
| 9323 | os << "!!ERROR!!\n" | |||
| 9324 | << "CKD_MT1.00 H2O foreign continuum:\n" | |||
| 9325 | << "INPUT model name is: " << model << ".\n" | |||
| 9326 | << "VALID model names are user and CKDMT100\n"; | |||
| 9327 | throw runtime_error(os.str()); | |||
| 9328 | } | |||
| 9329 | ||||
| 9330 | ||||
| 9331 | // scaling factor of the foreign H2O cont. absorption | |||
| 9332 | Numeric ScalingFac = 1.0000e0; | |||
| 9333 | if ( model == "user" ) | |||
| 9334 | { | |||
| 9335 | ScalingFac = Cin; // input scaling factor of calculated absorption | |||
| 9336 | } | |||
| 9337 | ||||
| 9338 | ||||
| 9339 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 9340 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 9341 | ||||
| 9342 | ||||
| 9343 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 9344 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 9344 , "n_p==abs_t.nelem()") : (void)0); | |||
| 9345 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 9345 , "n_p==vmr.nelem()") : (void)0); | |||
| 9346 | ||||
| 9347 | // Check that dimensions of pxsec are consistent with n_f | |||
| 9348 | // and n_p. It should be [n_f,n_p]: | |||
| 9349 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 9349 , "n_f==pxsec.nrows()") : (void)0); | |||
| 9350 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 9350 , "n_p==pxsec.ncols()") : (void)0); | |||
| 9351 | ||||
| 9352 | ||||
| 9353 | // ************************** CKD stuff ************************************ | |||
| 9354 | ||||
| 9355 | const Numeric xLosmt = 2.68675e19; // [molecules/cm^3] | |||
| 9356 | const Numeric T1 = 273.000e0; | |||
| 9357 | const Numeric TO = 296.000e0; | |||
| 9358 | const Numeric PO = 1013.000e0; | |||
| 9359 | ||||
| 9360 | // wavenumber range where CKD H2O self continuum is valid | |||
| 9361 | const Numeric VABS_min = -2.000e1; // [cm^-1] | |||
| 9362 | const Numeric VABS_max = 2.000e4; // [cm^-1] | |||
| 9363 | ||||
| 9364 | ||||
| 9365 | // It is assumed here that f_grid is monotonically increasing with index! | |||
| 9366 | // In future change this return into a change of the loop over | |||
| 9367 | // the frequency f_grid. n_f_new < n_f | |||
| 9368 | Numeric V1ABS = f_grid[0] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 9369 | Numeric V2ABS = f_grid[n_f-1] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 9370 | if ( (V1ABS < VABS_min) || (V1ABS > VABS_max) || | |||
| 9371 | (V2ABS < VABS_min) || (V2ABS > VABS_max) ) | |||
| 9372 | { | |||
| 9373 | out3 << "WARNING:\n" | |||
| 9374 | << " CKD_MT 1.00 H2O foreign continuum:\n" | |||
| 9375 | << " input frequency vector exceeds range of model validity\n" | |||
| 9376 | << " " << FH2O_ckd_mt_100_v1 << "<->" << FH2O_ckd_mt_100_v2 << "cm^-1\n"; | |||
| 9377 | } | |||
| 9378 | ||||
| 9379 | ||||
| 9380 | // ---------------------- subroutine FRN296 ------------------------------ | |||
| 9381 | ||||
| 9382 | // retrieve the appropriate array sequence of the foreign continuum | |||
| 9383 | // arrays of the CKD model. | |||
| 9384 | Numeric DVC = FH2O_ckd_mt_100_dv; | |||
| 9385 | Numeric V1C = V1ABS - DVC; | |||
| 9386 | Numeric V2C = V2ABS + DVC; | |||
| 9387 | ||||
| 9388 | int I1 = (int) ((V1C-FH2O_ckd_mt_100_v1) / FH2O_ckd_mt_100_dv); | |||
| 9389 | if (V1C < FH2O_ckd_mt_100_v1) I1 = -1; | |||
| 9390 | V1C = FH2O_ckd_mt_100_v1 + (FH2O_ckd_mt_100_dv * (Numeric)I1); | |||
| 9391 | ||||
| 9392 | int I2 = (int) ((V2C-FH2O_ckd_mt_100_v1) / FH2O_ckd_mt_100_dv); | |||
| 9393 | ||||
| 9394 | int NPTC = I2-I1+3; | |||
| 9395 | if (NPTC > FH2O_ckd_mt_100_npt) NPTC = FH2O_ckd_mt_100_npt+1; | |||
| 9396 | ||||
| 9397 | V2C = V1C + FH2O_ckd_mt_100_dv * (Numeric)(NPTC-1); | |||
| 9398 | ||||
| 9399 | if (NPTC < 1) | |||
| 9400 | { | |||
| 9401 | out3 << "WARNING:\n" | |||
| 9402 | << " CKD_MT 1.00 H2O foreign continuum:\n" | |||
| 9403 | << " no elements of internal continuum coefficients could be found for the\n" | |||
| 9404 | << " input frequency range.\n" | |||
| 9405 | << " Leave the function without calculating the absorption."; | |||
| 9406 | return; | |||
| 9407 | } | |||
| 9408 | ||||
| 9409 | Vector FH2OT0(NPTC+addF77fields, 0.); // [cm^3/molecules] | |||
| 9410 | ||||
| 9411 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 9412 | { | |||
| 9413 | Index I = I1+J; | |||
| 9414 | if ( (I > 0) && (I <= FH2O_ckd_mt_100_npt) ) | |||
| 9415 | { | |||
| 9416 | FH2OT0[J] = FH2O_ckd_mt_100[I]; | |||
| 9417 | } | |||
| 9418 | } | |||
| 9419 | ||||
| 9420 | // ---------------------- subroutine FRN296 ------------------------------ | |||
| 9421 | ||||
| 9422 | ||||
| 9423 | ||||
| 9424 | ||||
| 9425 | // Loop pressure/temperature: | |||
| 9426 | for ( Index i = 0 ; i < n_p ; ++i ) | |||
| 9427 | { | |||
| 9428 | // atmospheric state parameters | |||
| 9429 | Numeric Tave = abs_t[i]; // [K] | |||
| 9430 | Numeric Pave = (abs_p[i]*1.000e-2); // [hPa] | |||
| 9431 | Numeric vmrh2o = vmr[i]; // [1] | |||
| 9432 | // FIXME Numeric ph2o = vmrh2o * Pave; // [hPa] | |||
| 9433 | Numeric PFRGN = (Pave/PO) * (1.00000e0 - vmrh2o); // dry air pressure [hPa] | |||
| 9434 | Numeric RFRGN = PFRGN * (TO/Tave); // [hPa] | |||
| 9435 | Numeric WTOT = xLosmt * (Pave/PO) * (T1/Tave); // [molecules/cm^2] | |||
| 9436 | // FIXME Numeric W1 = vmrh2o * WTOT; // [molecules/cm^2] | |||
| 9437 | Numeric XKT = Tave / 1.4387752; // = (T*k_B) / (h*c) | |||
| 9438 | ||||
| 9439 | // Molecular cross section calculated by CKD. | |||
| 9440 | // The cross sectionis calculated on the predefined | |||
| 9441 | // CKD wavenumber grid. | |||
| 9442 | Vector k(NPTC+addF77fields, 0.); // [1/cm] | |||
| 9443 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 9444 | { | |||
| 9445 | Numeric VJ = V1C + (DVC * (Numeric)(J-1)); | |||
| 9446 | Numeric FH2O = FH2OT0[J]; | |||
| 9447 | ||||
| 9448 | // CKD cross section with radiative field [1/cm] | |||
| 9449 | // The VMRH2O will be multiplied in abs_coefCalc, hence WTOT and not W1 | |||
| 9450 | // as multiplicative term | |||
| 9451 | k[J] = WTOT * RFRGN * (FH2O*1.000e-20) * RADFN_FUN(VJ,XKT); | |||
| 9452 | ||||
| 9453 | } | |||
| 9454 | ||||
| 9455 | // Loop input frequency array. The previously calculated cross section | |||
| 9456 | // has therefore to be interpolated on the input frequencies. | |||
| 9457 | for ( Index s = 0 ; s < n_f ; ++s ) | |||
| 9458 | { | |||
| 9459 | // calculate the associated wave number (= 1/wavelength) | |||
| 9460 | Numeric V = f_grid[s] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 9461 | if ( (V >= 0.000e0) && (V < VABS_max) ) | |||
| 9462 | { | |||
| 9463 | // arts CKD_MT.100 cross section [1/m] | |||
| 9464 | // interpolate the k vector on the f_grid grid | |||
| 9465 | // The factor 100 comes from the conversion from (1/cm) to (1/m) | |||
| 9466 | // of the abs. coeff. | |||
| 9467 | pxsec(s,i) += ScalingFac * 1.000e2 * XINT_FUN(V1C,V2C,DVC,k,V); | |||
| 9468 | } | |||
| 9469 | } | |||
| 9470 | } | |||
| 9471 | ||||
| 9472 | } | |||
| 9473 | ||||
| 9474 | // | |||
| 9475 | // ================================================================================= | |||
| 9476 | ||||
| 9477 | //! CKD version MT 2.50 H2O self continuum absorption model | |||
| 9478 | /*! | |||
| 9479 | The following modifications to the water vapor continuum arise from new analyses of | |||
| 9480 | ARM measurements in the microwave and far-IR regions. Analyses of measurements | |||
| 9481 | in the microwave are based primarily on the two-channel MWR (23.8 and 31.4 GHz) | |||
| 9482 | at SGP, with supporting evidence from 150 GHz MWRHF measurements during the | |||
| 9483 | COPS campaign and from 170 GHz GVRP measurements at SGP (V. H. Payne, E. J. | |||
| 9484 | Mlawer and S. A. Clough). Measurements in the far-IR were from the AERI_ext at the | |||
| 9485 | NSA site, in the time surrounding and including the RHUBC-I campaign (J. Delamere | |||
| 9486 | and S. A. Clough). | |||
| 9487 | ||||
| 9488 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 9489 | H2O self continuum according to CKD_MT 1.00 [1/m] | |||
| 9490 | \param Cin strength scaling factor [1] | |||
| 9491 | \param model allows user defined input parameter set | |||
| 9492 | (Cin)<br> | |||
| 9493 | or choice of | |||
| 9494 | pre-defined parameters of specific models (see note below). | |||
| 9495 | \param f_grid predefined frequency grid [Hz] | |||
| 9496 | \param abs_p predefined pressure grid [Pa] | |||
| 9497 | \param abs_t predefined temperature grid [K] | |||
| 9498 | \param vmr H2O volume mixing ratio profile [1] | |||
| 9499 | ||||
| 9500 | \note This absorption model is taken from the FORTRAN77 code of | |||
| 9501 | CKD_MT version 2.50 written by<br> | |||
| 9502 | Atmospheric and Environmental Research Inc. (AER),<br> | |||
| 9503 | Radiation and Climate Group<br> | |||
| 9504 | 131 Hartwell Avenue<br> | |||
| 9505 | Lexington, MA 02421, USA<br> | |||
| 9506 | http://www.rtweb.aer.com/continuum_frame.html | |||
| 9507 | ||||
| 9508 | \author Mayuri Tatiya | |||
| 9509 | \date 2014-26-06 | |||
| 9510 | */ | |||
| 9511 | void CKD_mt_250_self_h2o (MatrixView pxsec, | |||
| 9512 | const Numeric Cin, | |||
| 9513 | const String& model, | |||
| 9514 | ConstVectorView f_grid, | |||
| 9515 | ConstVectorView abs_p, | |||
| 9516 | ConstVectorView abs_t, | |||
| 9517 | ConstVectorView vmr, | |||
| 9518 | const Verbosity& verbosity) | |||
| 9519 | { | |||
| 9520 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 9521 | ||||
| 9522 | // check the model name about consistency | |||
| 9523 | if ((model != "user") && (model != "CKDMT252")) | |||
| 9524 | { | |||
| 9525 | ostringstream os; | |||
| 9526 | os << "!!ERROR!!\n" | |||
| 9527 | << "CKD_MT2.50 H2O self continuum:\n" | |||
| 9528 | << "INPUT model name is: " << model << ".\n" | |||
| 9529 | << "VALID model names are user and CKDMT252\n"; | |||
| 9530 | throw runtime_error(os.str()); | |||
| 9531 | } | |||
| 9532 | ||||
| 9533 | ||||
| 9534 | // scaling factor of the self H2O cont. absorption | |||
| 9535 | Numeric ScalingFac = 1.0000e0; | |||
| 9536 | if ( model == "user" ) | |||
| 9537 | { | |||
| 9538 | ScalingFac = Cin; // input scaling factor of calculated absorption | |||
| 9539 | } | |||
| 9540 | ||||
| 9541 | ||||
| 9542 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 9543 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 9544 | ||||
| 9545 | ||||
| 9546 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 9547 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 9547 , "n_p==abs_t.nelem()") : (void)0); | |||
| 9548 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 9548 , "n_p==vmr.nelem()") : (void)0); | |||
| 9549 | ||||
| 9550 | // Check that dimensions of pxsec are consistent with n_f | |||
| 9551 | // and n_p. It should be [n_f,n_p]: | |||
| 9552 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 9552 , "n_f==pxsec.nrows()") : (void)0); | |||
| 9553 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 9553 , "n_p==pxsec.ncols()") : (void)0); | |||
| 9554 | ||||
| 9555 | ||||
| 9556 | // ************************** CKD stuff ************************************ | |||
| 9557 | ||||
| 9558 | const Numeric xLosmt = 2.68675e19; // [molecules/cm^3] | |||
| 9559 | // FIXME const Numeric T1 = 273.000e0; // [K] | |||
| 9560 | const Numeric TO = 296.000e0; // [K] | |||
| 9561 | const Numeric PO = 1013.000e0; // [hPa] | |||
| 9562 | ||||
| 9563 | const Numeric XFACREV[15] = | |||
| 9564 | {1.003, 1.009, 1.015, 1.023, 1.029,1.033, | |||
| 9565 | 1.037, 1.039, 1.040, 1.046, 1.036,1.027, | |||
| 9566 | 1.01, 1.002, 1.00}; | |||
| 9567 | ||||
| 9568 | const Numeric XFACREV1[120] = | |||
| 9569 | {1.000, 1.040, 1.080, 1.120, 1.160, | |||
| 9570 | 1.200, 1.240, 1.280, 1.318, 1.357, | |||
| 9571 | 1.404, 1.453, 1.499, 1.553, 1.608, | |||
| 9572 | 1.674, 1.746, 1.818, 1.899, 1.984, | |||
| 9573 | 2.078, 2.174, 2.276, 2.385, 2.502, | |||
| 9574 | 2.624, 2.747, 2.883, 3.018, 3.170, | |||
| 9575 | 3.321, 3.473, 3.635, 3.803, 3.974, | |||
| 9576 | 4.144, 4.327, 4.500, 4.703, 4.887, | |||
| 9577 | 5.102, 5.286, 5.498, 5.701, 5.935, | |||
| 9578 | 6.155, 6.405, 6.633, 6.892, 7.115, | |||
| 9579 | 7.397, 7.650, 7.917, 8.177, 8.437, | |||
| 9580 | 8.704, 8.953, 9.192, 9.428, 9.644, | |||
| 9581 | 9.821, 9.954, 10.11, 10.17, 10.21, | |||
| 9582 | 10.26, 10.29, 10.28, 10.26, 10.20, | |||
| 9583 | 10.15, 10.16, 10.25, 10.02, 9.965, | |||
| 9584 | 10.01, 9.934, 9.847, 9.744, 9.566, | |||
| 9585 | 9.436, 9.181, 8.872, 8.547, 8.155, | |||
| 9586 | 7.730, 7.261, 6.777, 6.271, 5.807, | |||
| 9587 | 5.313, 4.845, 4.444, 4.074, 3.677, | |||
| 9588 | 3.362, 3.087, 2.826, 2.615, 2.385, | |||
| 9589 | 2.238, 2.148, 1.979, 1.939, 1.773, | |||
| 9590 | 1.696, 1.642, 1.569, 1.510, 1.474, | |||
| 9591 | 1.425, 1.375, 1.322, 1.272, 1.230, | |||
| 9592 | 1.180, 1.130, 1.080, 1.040, 1.000}; | |||
| 9593 | ||||
| 9594 | // wavenumber range where CKD H2O self continuum is valid | |||
| 9595 | const Numeric VABS_min = -2.000e1; // [cm^-1] | |||
| 9596 | const Numeric VABS_max = 2.000e4; // [cm^-1] | |||
| 9597 | ||||
| 9598 | ||||
| 9599 | // It is assumed here that f_grid is monotonically increasing with index! | |||
| 9600 | // In future change this return into a change of the loop over | |||
| 9601 | // the frequency f_grid. n_f_new < n_f | |||
| 9602 | Numeric V1ABS = f_grid[0] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 9603 | Numeric V2ABS = f_grid[n_f-1] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 9604 | if ( (V1ABS < VABS_min) || (V1ABS > VABS_max) || | |||
| 9605 | (V2ABS < VABS_min) || (V2ABS > VABS_max) ) | |||
| 9606 | { | |||
| 9607 | out3 << "WARNING:\n" | |||
| 9608 | << " CKD_MT 1.00 H2O self continuum:\n" | |||
| 9609 | << " input frequency vector exceeds range of model validity\n" | |||
| 9610 | << " " << SL296_ckd_mt_100_v1 << "<->" << SL296_ckd_mt_100_v2 << "cm^-1\n"; | |||
| 9611 | } | |||
| 9612 | ||||
| 9613 | ||||
| 9614 | // ------------------- subroutine SL296/SL260 ---------------------------- | |||
| 9615 | ||||
| 9616 | if (SL296_ckd_mt_100_v1 != SL260_ckd_mt_100_v1) | |||
| 9617 | { | |||
| 9618 | ostringstream os; | |||
| 9619 | os << "!!ERROR!!\n" | |||
| 9620 | << "CKD_MT 1.00 H2O self continuum:\n" | |||
| 9621 | << "parameter V1 not the same for different ref. temperatures.\n"; | |||
| 9622 | throw runtime_error(os.str()); | |||
| 9623 | } | |||
| 9624 | if (SL296_ckd_mt_100_v2 != SL260_ckd_mt_100_v2) | |||
| 9625 | { | |||
| 9626 | ostringstream os; | |||
| 9627 | os << "!!ERROR!!\n" | |||
| 9628 | << "CKD_MT 1.00 H2O self continuum:\n" | |||
| 9629 | << "parameter V2 not the same for different ref. temperatures.\n"; | |||
| 9630 | throw runtime_error(os.str()); | |||
| 9631 | } | |||
| 9632 | if (SL296_ckd_mt_100_dv != SL260_ckd_mt_100_dv) | |||
| 9633 | { | |||
| 9634 | ostringstream os; | |||
| 9635 | os << "!!ERROR!!\n" | |||
| 9636 | << "CKD_MT 1.00 H2O self continuum:\n" | |||
| 9637 | << "parameter DV not the same for different ref. temperatures.\n"; | |||
| 9638 | throw runtime_error(os.str()); | |||
| 9639 | } | |||
| 9640 | if (SL296_ckd_mt_100_npt != SL260_ckd_mt_100_npt) | |||
| 9641 | { | |||
| 9642 | ostringstream os; | |||
| 9643 | os << "!!ERROR!!\n" | |||
| 9644 | << "CKD_MT 1.00 H2O self continuum:\n" | |||
| 9645 | << "parameter NPT not the same for different ref. temperatures.\n"; | |||
| 9646 | throw runtime_error(os.str()); | |||
| 9647 | } | |||
| 9648 | ||||
| 9649 | // retrieve the appropriate array sequence of the self continuum | |||
| 9650 | // arrays of the CKD model. | |||
| 9651 | Numeric DVC = SL296_ckd_mt_100_dv; | |||
| 9652 | Numeric V1C = V1ABS - DVC; | |||
| 9653 | Numeric V2C = V2ABS + DVC; | |||
| 9654 | ||||
| 9655 | int I1 = (int) ((V1C-SL296_ckd_mt_100_v1) / SL296_ckd_mt_100_dv); | |||
| 9656 | if (V1C < SL296_ckd_mt_100_v1) I1 = -1; | |||
| 9657 | V1C = SL296_ckd_mt_100_v1 + (SL296_ckd_mt_100_dv * (Numeric)I1); | |||
| 9658 | ||||
| 9659 | int I2 = (int) ((V2C-SL296_ckd_mt_100_v1) / SL296_ckd_mt_100_dv); | |||
| 9660 | ||||
| 9661 | int NPTC = I2-I1+3; | |||
| 9662 | if (NPTC > SL296_ckd_mt_100_npt) NPTC = SL296_ckd_mt_100_npt+1; | |||
| 9663 | ||||
| 9664 | V2C = V1C + SL296_ckd_mt_100_dv * (Numeric)(NPTC-1); | |||
| 9665 | ||||
| 9666 | if (NPTC < 1) | |||
| 9667 | { | |||
| 9668 | out3 << "WARNING:\n" | |||
| 9669 | << " CKD_MT 1.00 H2O self continuum:\n" | |||
| 9670 | << " no elements of internal continuum coefficients could be found for the\n" | |||
| 9671 | << " input frequency range.\n" | |||
| 9672 | << " Leave the function without calculating the absorption."; | |||
| 9673 | return; | |||
| 9674 | } | |||
| 9675 | ||||
| 9676 | Vector SH2OT0(NPTC+addF77fields, 0.); // [cm^3/molecules] | |||
| 9677 | Vector SH2OT1(NPTC+addF77fields, 0.); // [cm^3/molecules] | |||
| 9678 | ||||
| 9679 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 9680 | { | |||
| 9681 | Index I = I1+J; | |||
| 9682 | if ( (I > 0) && (I <= SL296_ckd_mt_100_npt) ) | |||
| 9683 | { | |||
| 9684 | SH2OT0[J] = SL296_ckd_mt_100[I]; // at T=296 K | |||
| 9685 | SH2OT1[J] = SL260_ckd_mt_100[I]; // at T=260 K | |||
| 9686 | } | |||
| 9687 | } | |||
| 9688 | ||||
| 9689 | // ------------------- subroutine SL296/SL260 ---------------------------- | |||
| 9690 | ||||
| 9691 | Numeric SFAC = 1.00e0; | |||
| 9692 | ||||
| 9693 | // Loop pressure/temperature: | |||
| 9694 | for ( Index i = 0 ; i < n_p ; ++i ) | |||
| 9695 | { | |||
| 9696 | ||||
| 9697 | // atmospheric state parameters | |||
| 9698 | Numeric Tave = abs_t[i]; // [K] | |||
| 9699 | Numeric Pave = (abs_p[i]*1.000e-2); // [hPa] | |||
| 9700 | Numeric Patm = Pave/PO; // [1] | |||
| 9701 | Numeric vmrh2o = vmr[i]; // [1] | |||
| 9702 | // FIXME Numeric Ph2o = Patm * vmrh2o; // [1] | |||
| 9703 | // second vmr in abs_coefCalc multiplied | |||
| 9704 | Numeric Rh2o = Patm * (TO/Tave); // [1] | |||
| 9705 | Numeric Tfac = (Tave-TO)/(260.0-TO); // [1] | |||
| 9706 | Numeric WTOT = xLosmt * (Pave/1.013000e3) * (2.7300e2/Tave); // [molecules/cm^2] | |||
| 9707 | Numeric W1 = vmrh2o * WTOT; // [molecules/cm^2] | |||
| 9708 | Numeric XKT = Tave / 1.4387752e0; // = (T*k_B)/(h*c) | |||
| 9709 | ||||
| 9710 | // Molecular cross section calculated by CKD. | |||
| 9711 | // The cross sectionis calculated on the predefined | |||
| 9712 | // CKD wavenumber grid. | |||
| 9713 | Vector k(NPTC+addF77fields, 0.); // [1/cm] | |||
| 9714 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 9715 | { | |||
| 9716 | Numeric VJ = V1C + (DVC * (Numeric)(J-1)); | |||
| 9717 | Numeric SH2O = 0.0e0; | |||
| 9718 | if (SH2OT0[J] > 0.0e0) | |||
| 9719 | { | |||
| 9720 | SH2O = SH2OT0[J] * pow( (SH2OT1[J]/SH2OT0[J]), Tfac ); | |||
| 9721 | SFAC = 1.00e0; | |||
| 9722 | ||||
| 9723 | if ( (VJ >= 820.0e0) && (VJ <= 960.0e0) ) | |||
| 9724 | { | |||
| 9725 | int JFAC = (int)((VJ - 820.0e0)/10.0e0 + 0.00001e0); | |||
| 9726 | if ( (JFAC >= 0) && (JFAC <=14) ) | |||
| 9727 | SFAC = XFACREV[JFAC]; | |||
| 9728 | } | |||
| 9729 | ||||
| 9730 | // CKD MT 2.5 correction to the self continuum (IASI data, fit to near-IR results of Bicknell et al., 2006 and Fulghum and Tilleman, 1991 | |||
| 9731 | ||||
| 9732 | if ( (VJ >= 2000.0e0) && (VJ <= 3190.0e0) ) | |||
| 9733 | { | |||
| 9734 | int JFAC = (int)((VJ - 1990.0e0)/10.0e0 + 0.00001e0); | |||
| 9735 | if ( (JFAC >= 1) && (JFAC <=120) ) | |||
| 9736 | SFAC = XFACREV1[JFAC]; | |||
| 9737 | } | |||
| 9738 | SFAC = SFAC * ( 1.000e0 + ( 0.25e0/( 1.000e0 + pow( (VJ/350.0), 6.0)))); // CKD MT 2.4 (microwave and IR ARM data 0-600 cm-1) | |||
| 9739 | ||||
| 9740 | SH2O = SFAC * SH2O; | |||
| 9741 | } | |||
| 9742 | ||||
| 9743 | ||||
| 9744 | // CKD cross section with radiative field [1/cm] | |||
| 9745 | // The VMRH2O will be multiplied in abs_coefCalc, hence Rh2o does not contain | |||
| 9746 | // VMRH2O as multiplicative term | |||
| 9747 | k[J] = W1 * Rh2o * (SH2O*1.000e-20) * RADFN_FUN(VJ,XKT); | |||
| 9748 | ||||
| 9749 | } | |||
| 9750 | ||||
| 9751 | ||||
| 9752 | // Loop input frequency array. The previously calculated cross section | |||
| 9753 | // has therefore to be interpolated on the input frequencies. | |||
| 9754 | for ( Index s = 0 ; s < n_f ; ++s ) | |||
| 9755 | { | |||
| 9756 | // calculate the associated wave number (= 1/wavelength) | |||
| 9757 | Numeric V = f_grid[s] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 9758 | if ( (V > 0.000e0) && (V < SL296_ckd_mt_100_v2) ) | |||
| 9759 | { | |||
| 9760 | // arts cross section [1/m] | |||
| 9761 | // interpolate the k vector on the f_grid grid | |||
| 9762 | // The factor 100 comes from the conversion from 1/cm to 1/m for | |||
| 9763 | // the absorption coefficient | |||
| 9764 | pxsec(s,i) += ScalingFac * 1.000e2 * XINT_FUN(V1C,V2C,DVC,k,V); | |||
| 9765 | } | |||
| 9766 | } | |||
| 9767 | } | |||
| 9768 | ||||
| 9769 | } | |||
| 9770 | ||||
| 9771 | // ================================================================================= | |||
| 9772 | ||||
| 9773 | //! CKD version MT 2.50 H2O foreign continuum absorption model | |||
| 9774 | /*! | |||
| 9775 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 9776 | H2O foreign continuum according to CKD_MT 1.00 [1/m] | |||
| 9777 | \param Cin strength scaling factor [1] | |||
| 9778 | \param model allows user defined input parameter set | |||
| 9779 | (Cin)<br> | |||
| 9780 | or choice of | |||
| 9781 | pre-defined parameters of specific models (see note below). | |||
| 9782 | \param f_grid predefined frequency grid [Hz] | |||
| 9783 | \param abs_p predefined pressure grid [Pa] | |||
| 9784 | \param abs_t predefined temperature grid [K] | |||
| 9785 | \param vmr H2O volume mixing ratio profile [1] | |||
| 9786 | ||||
| 9787 | \note This absorption model is taken from the FORTRAN77 code of | |||
| 9788 | CKD_MT version 1.00 written by<br> | |||
| 9789 | Atmospheric and Environmental Research Inc. (AER),<br> | |||
| 9790 | Radiation and Climate Group<br> | |||
| 9791 | 131 Hartwell Avenue<br> | |||
| 9792 | Lexington, MA 02421, USA<br> | |||
| 9793 | http://www.rtweb.aer.com/continuum_frame.html | |||
| 9794 | ||||
| 9795 | \author Mayuri Tatiya | |||
| 9796 | \date 2014-30-06 | |||
| 9797 | */ | |||
| 9798 | void CKD_mt_250_foreign_h2o (MatrixView pxsec, | |||
| 9799 | const Numeric Cin, | |||
| 9800 | const String& model, | |||
| 9801 | ConstVectorView f_grid, | |||
| 9802 | ConstVectorView abs_p, | |||
| 9803 | ConstVectorView abs_t, | |||
| 9804 | ConstVectorView vmr, | |||
| 9805 | const Verbosity& verbosity) | |||
| 9806 | { | |||
| 9807 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 9808 | ||||
| 9809 | // check the model name about consistency | |||
| 9810 | if ((model != "user") && (model != "CKDMT252")) | |||
| 9811 | { | |||
| 9812 | ostringstream os; | |||
| 9813 | os << "!!ERROR!!\n" | |||
| 9814 | << "CKD_MT2.50 H2O foreign continuum:\n" | |||
| 9815 | << "INPUT model name is: " << model << ".\n" | |||
| 9816 | << "VALID model names are user and CKDMT252\n"; | |||
| 9817 | throw runtime_error(os.str()); | |||
| 9818 | } | |||
| 9819 | ||||
| 9820 | ||||
| 9821 | // scaling factor of the foreign H2O cont. absorption | |||
| 9822 | Numeric ScalingFac = 1.0000e0; | |||
| 9823 | if ( model == "user" ) | |||
| 9824 | { | |||
| 9825 | ScalingFac = Cin; // input scaling factor of calculated absorption | |||
| 9826 | } | |||
| 9827 | ||||
| 9828 | ||||
| 9829 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 9830 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 9831 | ||||
| 9832 | ||||
| 9833 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 9834 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 9834 , "n_p==abs_t.nelem()") : (void)0); | |||
| 9835 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 9835 , "n_p==vmr.nelem()") : (void)0); | |||
| 9836 | ||||
| 9837 | // Check that dimensions of pxsec are consistent with n_f | |||
| 9838 | // and n_p. It should be [n_f,n_p]: | |||
| 9839 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 9839 , "n_f==pxsec.nrows()") : (void)0); | |||
| 9840 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 9840 , "n_p==pxsec.ncols()") : (void)0); | |||
| 9841 | ||||
| 9842 | ||||
| 9843 | // ************************** CKD stuff ************************************ | |||
| 9844 | ||||
| 9845 | const Numeric xLosmt = 2.68675e19; // [molecules/cm^3] | |||
| 9846 | const Numeric T1 = 273.000e0; | |||
| 9847 | const Numeric TO = 296.000e0; | |||
| 9848 | const Numeric PO = 1013.000e0; | |||
| 9849 | ||||
| 9850 | // wavenumber range where CKD H2O self continuum is valid | |||
| 9851 | const Numeric VABS_min = -2.000e1; // [cm^-1] | |||
| 9852 | const Numeric VABS_max = 2.000e4; // [cm^-1] | |||
| 9853 | ||||
| 9854 | ||||
| 9855 | // It is assumed here that f_grid is monotonically increasing with index! | |||
| 9856 | // In future change this return into a change of the loop over | |||
| 9857 | // the frequency f_grid. n_f_new < n_f | |||
| 9858 | Numeric V1ABS = f_grid[0] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 9859 | Numeric V2ABS = f_grid[n_f-1] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 9860 | if ( (V1ABS < VABS_min) || (V1ABS > VABS_max) || | |||
| 9861 | (V2ABS < VABS_min) || (V2ABS > VABS_max) ) | |||
| 9862 | { | |||
| 9863 | out3 << "WARNING:\n" | |||
| 9864 | << " CKD_MT 2.50 H2O foreign continuum:\n" | |||
| 9865 | << " input frequency vector exceeds range of model validity\n" | |||
| 9866 | << " " << FH2O_ckd_mt_100_v1 << "<->" << FH2O_ckd_mt_100_v2 << "cm^-1\n"; | |||
| 9867 | } | |||
| 9868 | ||||
| 9869 | ||||
| 9870 | // ---------------------- subroutine FRN296 ------------------------------ | |||
| 9871 | ||||
| 9872 | // retrieve the appropriate array sequence of the foreign continuum | |||
| 9873 | // arrays of the CKD model. | |||
| 9874 | Numeric DVC = FH2O_ckd_mt_100_dv; | |||
| 9875 | Numeric V1C = V1ABS - DVC; | |||
| 9876 | Numeric V2C = V2ABS + DVC; | |||
| 9877 | ||||
| 9878 | int I1 = (int) ((V1C-FH2O_ckd_mt_100_v1) / FH2O_ckd_mt_100_dv); | |||
| 9879 | if (V1C < FH2O_ckd_mt_100_v1) I1 = -1; | |||
| 9880 | V1C = FH2O_ckd_mt_100_v1 + (FH2O_ckd_mt_100_dv * (Numeric)I1); | |||
| 9881 | ||||
| 9882 | int I2 = (int) ((V2C-FH2O_ckd_mt_100_v1) / FH2O_ckd_mt_100_dv); | |||
| 9883 | ||||
| 9884 | int NPTC = I2-I1+3; | |||
| 9885 | if (NPTC > FH2O_ckd_mt_100_npt) NPTC = FH2O_ckd_mt_100_npt+1; | |||
| 9886 | ||||
| 9887 | V2C = V1C + FH2O_ckd_mt_100_dv * (Numeric)(NPTC-1); | |||
| 9888 | ||||
| 9889 | if (NPTC < 1) | |||
| 9890 | { | |||
| 9891 | out3 << "WARNING:\n" | |||
| 9892 | << " CKD_MT 2.50 H2O foreign continuum:\n" | |||
| 9893 | << " no elements of internal continuum coefficients could be found for the\n" | |||
| 9894 | << " input frequency range.\n" | |||
| 9895 | << " Leave the function without calculating the absorption."; | |||
| 9896 | return; | |||
| 9897 | } | |||
| 9898 | ||||
| 9899 | Vector FH2OT0(NPTC+addF77fields, 0.); // [cm^3/molecules] | |||
| 9900 | ||||
| 9901 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 9902 | { | |||
| 9903 | Index I = I1+J; | |||
| 9904 | if ( (I > 0) && (I <= FH2O_ckd_mt_100_npt) ) | |||
| 9905 | { | |||
| 9906 | FH2OT0[J] = FH2O_ckd_mt_100[I]; | |||
| 9907 | } | |||
| 9908 | } | |||
| 9909 | ||||
| 9910 | // ---------------------- subroutine FRN296 ------------------------------ | |||
| 9911 | ||||
| 9912 | ||||
| 9913 | ||||
| 9914 | ||||
| 9915 | // Loop pressure/temperature: | |||
| 9916 | for ( Index i = 0 ; i < n_p ; ++i ) | |||
| 9917 | { | |||
| 9918 | // atmospheric state parameters | |||
| 9919 | Numeric Tave = abs_t[i]; // [K] | |||
| 9920 | Numeric Pave = (abs_p[i]*1.000e-2); // [hPa] | |||
| 9921 | Numeric vmrh2o = vmr[i]; // [1] | |||
| 9922 | // FIXME Numeric ph2o = vmrh2o * Pave; // [hPa] | |||
| 9923 | Numeric PFRGN = (Pave/PO) * (1.00000e0 - vmrh2o); // dry air pressure [hPa] | |||
| 9924 | Numeric RFRGN = PFRGN * (TO/Tave); // [hPa] | |||
| 9925 | Numeric WTOT = xLosmt * (Pave/PO) * (T1/Tave); // [molecules/cm^2] | |||
| 9926 | // FIXME Numeric W1 = vmrh2o * WTOT; // [molecules/cm^2] | |||
| 9927 | Numeric XKT = Tave / 1.4387752; // = (T*k_B) / (h*c) | |||
| 9928 | ||||
| 9929 | // Molecular cross section calculated by CKD. | |||
| 9930 | // The cross sectionis calculated on the predefined | |||
| 9931 | // CKD wavenumber grid. | |||
| 9932 | Vector k(NPTC+addF77fields, 0.); // [1/cm] | |||
| 9933 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 9934 | { | |||
| 9935 | Numeric VJ = V1C + (DVC * (Numeric)(J-1)); | |||
| 9936 | Numeric VDELSQ1 = pow( (VJ - 255.67e0), 2e0 ); | |||
| 9937 | Numeric VDELmSQ1 = pow( (VJ + 255.67e0), 2e0 ); | |||
| 9938 | Numeric VF1 = pow( ((VJ-255.67e0)/57.83e0), 8e0); | |||
| 9939 | Numeric VmF1 = pow( ((VJ+255.67e0)/57.83e0), 8e0); | |||
| 9940 | Numeric VF2 = pow( ((VJ)/57.83e0), 8e0); | |||
| 9941 | ||||
| 9942 | Numeric FSCAL = 1.000e0 + (0.06e0 + (-0.42e0)*( (57600e0/(VDELSQ1+57600e0+VF1)) + (57600e0/(VDELmSQ1+57600e0+VmF1)) ) )/(1.000e0 + 0.3e0 * VF2); | |||
| 9943 | ||||
| 9944 | Numeric FH2O = FH2OT0[J] * FSCAL; //CKD MT 2.4 | |||
| 9945 | ||||
| 9946 | ||||
| 9947 | ||||
| 9948 | // CKD cross section with radiative field [1/cm] | |||
| 9949 | // The VMRH2O will be multiplied in abs_coefCalc, hence WTOT and not W1 | |||
| 9950 | // as multiplicative term | |||
| 9951 | k[J] = WTOT * RFRGN * (FH2O*1.000e-20) * RADFN_FUN(VJ,XKT); | |||
| 9952 | ||||
| 9953 | } | |||
| 9954 | ||||
| 9955 | // Loop input frequency array. The previously calculated cross section | |||
| 9956 | // has therefore to be interpolated on the input frequencies. | |||
| 9957 | for ( Index s = 0 ; s < n_f ; ++s ) | |||
| 9958 | { | |||
| 9959 | // calculate the associated wave number (= 1/wavelength) | |||
| 9960 | Numeric V = f_grid[s] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 9961 | if ( (V >= 0.000e0) && (V < VABS_max) ) | |||
| 9962 | { | |||
| 9963 | // arts CKD_MT.100 cross section [1/m] | |||
| 9964 | // interpolate the k vector on the f_grid grid | |||
| 9965 | // The factor 100 comes from the conversion from (1/cm) to (1/m) | |||
| 9966 | // of the abs. coeff. | |||
| 9967 | pxsec(s,i) += ScalingFac * 1.000e2 * XINT_FUN(V1C,V2C,DVC,k,V); | |||
| 9968 | } | |||
| 9969 | } | |||
| 9970 | } | |||
| 9971 | ||||
| 9972 | } | |||
| 9973 | ||||
| 9974 | // | |||
| 9975 | ||||
| 9976 | // | |||
| 9977 | // ================================================================================= | |||
| 9978 | ||||
| 9979 | //! CKD version MT 3.20 H2O self continuum absorption model | |||
| 9980 | /*! | |||
| 9981 | The following modifications to the self water vapor continuum arise from: | |||
| 9982 | ||||
| 9983 | August 2017: New coefficients for self continuum in window regions for wavenumbers greater than 2000 cm-1 | |||
| 9984 | were added and self continuum temperature dependence from 1800-3500 cm-1 were updated (E.J. Mlawer, | |||
| 9985 | M.J. Alvarado, K.E. Cady-Pereira). | |||
| 9986 | ||||
| 9987 | November 2016: SFAC re-adjusted based on RHUBC-II campaign. (Mlawer, E.J. et al. 2018 | |||
| 9988 | Analysis of water vapor absorption in the far-infrared and submillimeter regions | |||
| 9989 | using surface radiometric measurements fromextremely dry locations, submitted) | |||
| 9990 | ||||
| 9991 | July 2016: Self continuum coefficients were modified from 1880-2390 cm-1 to fix issues in the CO fundamental | |||
| 9992 | region that were pointed out by Alvarado et al. (2013). | |||
| 9993 | ||||
| 9994 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 9995 | H2O self continuum according to CKD_MT 1.00 [1/m] | |||
| 9996 | \param Cin strength scaling factor [1] | |||
| 9997 | \param model allows user defined input parameter set | |||
| 9998 | (Cin)<br> | |||
| 9999 | or choice of | |||
| 10000 | pre-defined parameters of specific models (see note below). | |||
| 10001 | \param f_grid predefined frequency grid [Hz] | |||
| 10002 | \param abs_p predefined pressure grid [Pa] | |||
| 10003 | \param abs_t predefined temperature grid [K] | |||
| 10004 | \param vmr H2O volume mixing ratio profile [1] | |||
| 10005 | ||||
| 10006 | \note This absorption model is taken from the FORTRAN77 code of | |||
| 10007 | CKD_MT version 3.20 contnm.f90 written by<br> | |||
| 10008 | Atmospheric and Environmental Research Inc. (AER),<br> | |||
| 10009 | Radiation and Climate Group<br> | |||
| 10010 | 131 Hartwell Avenue<br> | |||
| 10011 | Lexington, MA 02421, USA<br> | |||
| 10012 | http://www.rtweb.aer.com/continuum_frame.html | |||
| 10013 | ||||
| 10014 | \author Emma Turner | |||
| 10015 | \date 2018-29-10 | |||
| 10016 | */ | |||
| 10017 | void CKD_mt_320_self_h2o (MatrixView pxsec, | |||
| 10018 | const Numeric Cin, | |||
| 10019 | const String& model, | |||
| 10020 | ConstVectorView f_grid, | |||
| 10021 | ConstVectorView abs_p, | |||
| 10022 | ConstVectorView abs_t, | |||
| 10023 | ConstVectorView vmr, | |||
| 10024 | const Verbosity& verbosity) | |||
| 10025 | { | |||
| 10026 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 10027 | ||||
| 10028 | // check the model name about consistency | |||
| 10029 | if ((model != "user") && (model != "CKDMT320")) | |||
| 10030 | { | |||
| 10031 | ostringstream os; | |||
| 10032 | os << "!!ERROR!!\n" | |||
| 10033 | << "CKD_MT3.20 H2O self continuum:\n" | |||
| 10034 | << "INPUT model name is: " << model << ".\n" | |||
| 10035 | << "VALID model names are user and CKDMT320\n"; | |||
| 10036 | throw runtime_error(os.str()); | |||
| 10037 | } | |||
| 10038 | ||||
| 10039 | ||||
| 10040 | // scaling factor of the self H2O cont. absorption | |||
| 10041 | Numeric ScalingFac = 1.0000e0; | |||
| 10042 | if ( model == "user" ) | |||
| 10043 | { | |||
| 10044 | ScalingFac = Cin; // input scaling factor of calculated absorption | |||
| 10045 | } | |||
| 10046 | ||||
| 10047 | ||||
| 10048 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 10049 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 10050 | ||||
| 10051 | ||||
| 10052 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 10053 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 10053 , "n_p==abs_t.nelem()") : (void)0); | |||
| 10054 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 10054 , "n_p==vmr.nelem()") : (void)0); | |||
| 10055 | ||||
| 10056 | // Check that dimensions of pxsec are consistent with n_f | |||
| 10057 | // and n_p. It should be [n_f,n_p]: | |||
| 10058 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 10058 , "n_f==pxsec.nrows()") : (void)0); | |||
| 10059 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 10059 , "n_p==pxsec.ncols()") : (void)0); | |||
| 10060 | ||||
| 10061 | ||||
| 10062 | // ************************** CKD stuff ************************************ | |||
| 10063 | ||||
| 10064 | const Numeric xLosmt = 2.68675e19; // [molecules/cm^3] | |||
| 10065 | // FIXME const Numeric T1 = 273.000e0; // [K] | |||
| 10066 | const Numeric TO = 296.000e0; // [K] | |||
| 10067 | const Numeric PO = 1013.000e0; // [hPa] | |||
| 10068 | ||||
| 10069 | const Numeric XFACREV[15] = | |||
| 10070 | {1.003, 1.009, 1.015, 1.023, 1.029,1.033, | |||
| 10071 | 1.037, 1.039, 1.040, 1.046, 1.036,1.027, | |||
| 10072 | 1.01, 1.002, 1.00}; | |||
| 10073 | ||||
| 10074 | // wavenumber range where CKD H2O self continuum is valid | |||
| 10075 | const Numeric VABS_min = -2.000e1; // [cm^-1] | |||
| 10076 | const Numeric VABS_max = 2.000e4; // [cm^-1] | |||
| 10077 | ||||
| 10078 | // It is assumed here that f_grid is monotonically increasing with index! | |||
| 10079 | // In future change this return into a change of the loop over | |||
| 10080 | // the frequency f_grid. n_f_new < n_f | |||
| 10081 | Numeric V1ABS = f_grid[0] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 10082 | Numeric V2ABS = f_grid[n_f-1] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 10083 | if ( (V1ABS < VABS_min) || (V1ABS > VABS_max) || | |||
| 10084 | (V2ABS < VABS_min) || (V2ABS > VABS_max) ) | |||
| 10085 | { | |||
| 10086 | out3 << "WARNING:\n" | |||
| 10087 | << " CKD_MT 3.20 H2O self continuum:\n" | |||
| 10088 | << " input frequency vector exceeds range of model validity\n" | |||
| 10089 | << " " << SL296_ckd_mt_320_v1 << "<->" << SL296_ckd_mt_320_v2 << "cm^-1\n"; | |||
| 10090 | } | |||
| 10091 | ||||
| 10092 | ||||
| 10093 | // ------------------- subroutine SL296/SL260 ---------------------------- | |||
| 10094 | ||||
| 10095 | if (SL296_ckd_mt_320_v1 != SL260_ckd_mt_320_v1) | |||
| 10096 | { | |||
| 10097 | ostringstream os; | |||
| 10098 | os << "!!ERROR!!\n" | |||
| 10099 | << "CKD_MT 3.20 H2O self continuum:\n" | |||
| 10100 | << "parameter V1 not the same for different ref. temperatures.\n"; | |||
| 10101 | throw runtime_error(os.str()); | |||
| 10102 | } | |||
| 10103 | if (SL296_ckd_mt_320_v2 != SL260_ckd_mt_320_v2) | |||
| 10104 | { | |||
| 10105 | ostringstream os; | |||
| 10106 | os << "!!ERROR!!\n" | |||
| 10107 | << "CKD_MT 3.20 H2O self continuum:\n" | |||
| 10108 | << "parameter V2 not the same for different ref. temperatures.\n"; | |||
| 10109 | throw runtime_error(os.str()); | |||
| 10110 | } | |||
| 10111 | if (SL296_ckd_mt_320_dv != SL260_ckd_mt_320_dv) | |||
| 10112 | { | |||
| 10113 | ostringstream os; | |||
| 10114 | os << "!!ERROR!!\n" | |||
| 10115 | << "CKD_MT 3.20 H2O self continuum:\n" | |||
| 10116 | << "parameter DV not the same for different ref. temperatures.\n"; | |||
| 10117 | throw runtime_error(os.str()); | |||
| 10118 | } | |||
| 10119 | if (SL296_ckd_mt_320_npt != SL260_ckd_mt_320_npt) | |||
| 10120 | { | |||
| 10121 | ostringstream os; | |||
| 10122 | os << "!!ERROR!!\n" | |||
| 10123 | << "CKD_MT 3.20 H2O self continuum:\n" | |||
| 10124 | << "parameter NPT not the same for different ref. temperatures.\n"; | |||
| 10125 | throw runtime_error(os.str()); | |||
| 10126 | } | |||
| 10127 | ||||
| 10128 | // retrieve the appropriate array sequence of the self continuum | |||
| 10129 | // arrays of the CKD model. | |||
| 10130 | Numeric DVC = SL296_ckd_mt_320_dv; | |||
| 10131 | Numeric V1C = V1ABS - DVC; | |||
| 10132 | Numeric V2C = V2ABS + DVC; | |||
| 10133 | ||||
| 10134 | int I1 = (int) ((V1C-SL296_ckd_mt_320_v1) / SL296_ckd_mt_320_dv); | |||
| 10135 | if (V1C < SL296_ckd_mt_320_v1) I1 = -1; | |||
| 10136 | V1C = SL296_ckd_mt_320_v1 + (SL296_ckd_mt_320_dv * (Numeric)I1); | |||
| 10137 | ||||
| 10138 | int I2 = (int) ((V2C-SL296_ckd_mt_320_v1) / SL296_ckd_mt_320_dv); | |||
| 10139 | ||||
| 10140 | int NPTC = I2-I1+3; | |||
| 10141 | if (NPTC > SL296_ckd_mt_320_npt) NPTC = SL296_ckd_mt_320_npt+1; | |||
| 10142 | ||||
| 10143 | V2C = V1C + SL296_ckd_mt_320_dv * (Numeric)(NPTC-1); | |||
| 10144 | ||||
| 10145 | if (NPTC < 1) | |||
| 10146 | { | |||
| 10147 | out3 << "WARNING:\n" | |||
| 10148 | << " CKD_MT 3.20 H2O self continuum:\n" | |||
| 10149 | << " no elements of internal continuum coefficients could be found for the\n" | |||
| 10150 | << " input frequency range.\n" | |||
| 10151 | << " Leave the function without calculating the absorption."; | |||
| 10152 | return; | |||
| 10153 | } | |||
| 10154 | ||||
| 10155 | Vector SH2OT0(NPTC+addF77fields, 0.); // [cm^3/molecules] | |||
| 10156 | Vector SH2OT1(NPTC+addF77fields, 0.); // [cm^3/molecules] | |||
| 10157 | ||||
| 10158 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 10159 | { | |||
| 10160 | Index I = I1+J; | |||
| 10161 | if ( (I > 0) && (I <= SL296_ckd_mt_320_npt) ) | |||
| 10162 | { | |||
| 10163 | SH2OT0[J] = SL296_ckd_mt_320[I]; // at T=296 K | |||
| 10164 | SH2OT1[J] = SL260_ckd_mt_320[I]; // at T=260 K | |||
| 10165 | } | |||
| 10166 | } | |||
| 10167 | ||||
| 10168 | // ------------------- subroutine SL296/SL260 ---------------------------- | |||
| 10169 | ||||
| 10170 | Numeric SFAC = 1.00e0; | |||
| 10171 | ||||
| 10172 | // Loop pressure/temperature: | |||
| 10173 | for ( Index i = 0 ; i < n_p ; ++i ) | |||
| 10174 | { | |||
| 10175 | ||||
| 10176 | // atmospheric state parameters | |||
| 10177 | Numeric Tave = abs_t[i]; // [K] | |||
| 10178 | Numeric Pave = (abs_p[i]*1.000e-2); // [hPa] | |||
| 10179 | Numeric Patm = Pave/PO; // [1] | |||
| 10180 | Numeric vmrh2o = vmr[i]; // [1] | |||
| 10181 | // FIXME Numeric Ph2o = Patm * vmrh2o; // [1] | |||
| 10182 | // second vmr in abs_coefCalc multiplied | |||
| 10183 | Numeric Rh2o = Patm * (TO/Tave); // [1] | |||
| 10184 | Numeric Tfac = (Tave-TO)/(260.0-TO); // [1] | |||
| 10185 | Numeric WTOT = xLosmt * (Pave/1.013000e3) * (2.7300e2/Tave); // [molecules/cm^2] | |||
| 10186 | Numeric W1 = vmrh2o * WTOT; // [molecules/cm^2] | |||
| 10187 | Numeric XKT = Tave / 1.4387752e0; // = (T*k_B)/(h*c) | |||
| 10188 | ||||
| 10189 | // Molecular cross section calculated by CKD. | |||
| 10190 | // The cross sectionis calculated on the predefined | |||
| 10191 | // CKD wavenumber grid. | |||
| 10192 | Vector k(NPTC+addF77fields, 0.); // [1/cm] | |||
| 10193 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 10194 | { | |||
| 10195 | Numeric VJ = V1C + (DVC * (Numeric)(J-1)); | |||
| 10196 | Numeric SH2O = 0.0e0; | |||
| 10197 | if (SH2OT0[J] > 0.0e0) | |||
| 10198 | { | |||
| 10199 | SH2O = SH2OT0[J] * pow( (SH2OT1[J]/SH2OT0[J]), Tfac ); | |||
| 10200 | SFAC = 1.00e0; | |||
| 10201 | ||||
| 10202 | if ( (VJ >= 820.0e0) && (VJ <= 960.0e0) ) | |||
| 10203 | { | |||
| 10204 | int JFAC = (int)((VJ - 820.0e0)/10.0e0 + 0.00001e0); | |||
| 10205 | if ( (JFAC >= 0) && (JFAC <=14) ) | |||
| 10206 | SFAC = XFACREV[JFAC]; | |||
| 10207 | } | |||
| 10208 | ||||
| 10209 | SFAC = SFAC * ( 1.000e0 + ( 0.25e0/( 1.000e0 + pow( (VJ/350.0), 6.0)))); // CKD MT 2.4 (microwave and IR ARM data 0-600 cm-1) | |||
| 10210 | ||||
| 10211 | SFAC = SFAC * ( 1.000e0 + ( 0.08e0/( 1.000e0 + pow( (VJ/40.0), 6.0)))); // CKD MT 3.0 correction from RHUBC-II Nov 2016 (Mlawer, E.J. et al. 2018) | |||
| 10212 | ||||
| 10213 | SH2O = SFAC * SH2O; | |||
| 10214 | } | |||
| 10215 | ||||
| 10216 | ||||
| 10217 | // CKD cross section with radiative field [1/cm] | |||
| 10218 | // The VMRH2O will be multiplied in abs_coefCalc, hence Rh2o does not contain | |||
| 10219 | // VMRH2O as multiplicative term | |||
| 10220 | k[J] = W1 * Rh2o * (SH2O*1.000e-20) * RADFN_FUN(VJ,XKT); | |||
| 10221 | ||||
| 10222 | } | |||
| 10223 | ||||
| 10224 | ||||
| 10225 | // Loop input frequency array. The previously calculated cross section | |||
| 10226 | // has therefore to be interpolated on the input frequencies. | |||
| 10227 | for ( Index s = 0 ; s < n_f ; ++s ) | |||
| 10228 | { | |||
| 10229 | // calculate the associated wave number (= 1/wavelength) | |||
| 10230 | Numeric V = f_grid[s] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 10231 | if ( (V > 0.000e0) && (V < SL296_ckd_mt_320_v2) ) | |||
| 10232 | { | |||
| 10233 | // arts cross section [1/m] | |||
| 10234 | // interpolate the k vector on the f_grid grid | |||
| 10235 | // The factor 100 comes from the conversion from 1/cm to 1/m for | |||
| 10236 | // the absorption coefficient | |||
| 10237 | pxsec(s,i) += ScalingFac * 1.000e2 * XINT_FUN(V1C,V2C,DVC,k,V); | |||
| 10238 | } | |||
| 10239 | } | |||
| 10240 | } | |||
| 10241 | ||||
| 10242 | } | |||
| 10243 | ||||
| 10244 | // ================================================================================= | |||
| 10245 | ||||
| 10246 | //! CKD version MT 3.20 H2O foreign continuum absorption model | |||
| 10247 | ||||
| 10248 | /*! | |||
| 10249 | ||||
| 10250 | Changes from the release notes: | |||
| 10251 | ||||
| 10252 | December 2016: The continuum has been updated to MT_CKD v3.0, which included modifications to the H2O foreign | |||
| 10253 | continuum from 0-600 cm-1 and the self continuum in the microwave that resulted from an analysis of measurements | |||
| 10254 | taken at the ARM RHUBC-II campaign and a re-analysis of RHUBC-I measurements. (E.J. Mlawer, D.D. Turner, | |||
| 10255 | S.N. Paine, V.H. Payne). Includes modifications to H2O foreign continuum coefficients in the far-infrared based on the analysis of | |||
| 10256 | REFIR-PAD (Bianchini and Palchetti, 2008) measurements taken at Cerro Toco, Chile, as part of the ARM RHUBC-II | |||
| 10257 | campaign and a re-analysis of the AERI-ER measurements from the ARM NSA site (first analyzed in | |||
| 10258 | Delamere et al., (2010)). The foreign continuum was also changed in the sub-millimeter and microwave regions as a result of the analysis | |||
| 10259 | of SAO FTS (Paine and Turner, 2013) measurements taken during the RHUBC-II campaign, which led to modification | |||
| 10260 | of the H2O self continuum in this region to maintain good agreement with the microwave measurements analyzed in | |||
| 10261 | Payne et al. (2008 and 2011). | |||
| 10262 | ||||
| 10263 | July 2016: Foreign continuum coefficients from 1800-3000 cm-1 were modified to improve agreement with Baranov | |||
| 10264 | and Lafferty (2012); in the 1900-2150 cm-1 region, attention was also paid to IASI measurements | |||
| 10265 | (Alvarado et al., 2013). Foreign continuum coefficients at wavenumbers greater than 4000 cm-1 were modified | |||
| 10266 | based on Baranov and Lafferty (2012) and Mondelain et al. (2014) measurements (E.J. Mlawer and M.J. Alvarado). | |||
| 10267 | ||||
| 10268 | ||||
| 10269 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 10270 | H2O foreign continuum according to CKD_MT 1.00 [1/m] | |||
| 10271 | \param Cin strength scaling factor [1] | |||
| 10272 | \param model allows user defined input parameter set | |||
| 10273 | (Cin)<br> | |||
| 10274 | or choice of | |||
| 10275 | pre-defined parameters of specific models (see note below). | |||
| 10276 | \param f_grid predefined frequency grid [Hz] | |||
| 10277 | \param abs_p predefined pressure grid [Pa] | |||
| 10278 | \param abs_t predefined temperature grid [K] | |||
| 10279 | \param vmr H2O volume mixing ratio profile [1] | |||
| 10280 | ||||
| 10281 | \note This absorption model is taken from the FORTRAN77 code of | |||
| 10282 | CKD_MT version 3.20 contnm.f90 written by<br> | |||
| 10283 | Atmospheric and Environmental Research Inc. (AER),<br> | |||
| 10284 | Radiation and Climate Group<br> | |||
| 10285 | 131 Hartwell Avenue<br> | |||
| 10286 | Lexington, MA 02421, USA<br> | |||
| 10287 | http://www.rtweb.aer.com/continuum_frame.html | |||
| 10288 | ||||
| 10289 | \author Emma Turner | |||
| 10290 | \date 2018-29-10 | |||
| 10291 | */ | |||
| 10292 | void CKD_mt_320_foreign_h2o (MatrixView pxsec, | |||
| 10293 | const Numeric Cin, | |||
| 10294 | const String& model, | |||
| 10295 | ConstVectorView f_grid, | |||
| 10296 | ConstVectorView abs_p, | |||
| 10297 | ConstVectorView abs_t, | |||
| 10298 | ConstVectorView vmr, | |||
| 10299 | const Verbosity& verbosity) | |||
| 10300 | { | |||
| 10301 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 10302 | ||||
| 10303 | // check the model name about consistency | |||
| 10304 | if ((model != "user") && (model != "CKDMT320")) | |||
| 10305 | { | |||
| 10306 | ostringstream os; | |||
| 10307 | os << "!!ERROR!!\n" | |||
| 10308 | << "CKD_MT3.20 H2O foreign continuum:\n" | |||
| 10309 | << "INPUT model name is: " << model << ".\n" | |||
| 10310 | << "VALID model names are user and CKDMT320\n"; | |||
| 10311 | throw runtime_error(os.str()); | |||
| 10312 | } | |||
| 10313 | ||||
| 10314 | ||||
| 10315 | // scaling factor of the foreign H2O cont. absorption | |||
| 10316 | Numeric ScalingFac = 1.0000e0; | |||
| 10317 | if ( model == "user" ) | |||
| 10318 | { | |||
| 10319 | ScalingFac = Cin; // input scaling factor of calculated absorption | |||
| 10320 | } | |||
| 10321 | ||||
| 10322 | ||||
| 10323 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 10324 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 10325 | ||||
| 10326 | ||||
| 10327 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 10328 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 10328 , "n_p==abs_t.nelem()") : (void)0); | |||
| 10329 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 10329 , "n_p==vmr.nelem()") : (void)0); | |||
| 10330 | ||||
| 10331 | // Check that dimensions of pxsec are consistent with n_f | |||
| 10332 | // and n_p. It should be [n_f,n_p]: | |||
| 10333 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 10333 , "n_f==pxsec.nrows()") : (void)0); | |||
| 10334 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 10334 , "n_p==pxsec.ncols()") : (void)0); | |||
| 10335 | ||||
| 10336 | ||||
| 10337 | // ************************** CKD stuff ************************************ | |||
| 10338 | ||||
| 10339 | const Numeric xLosmt = 2.68675e19; // [molecules/cm^3] | |||
| 10340 | const Numeric T1 = 273.000e0; | |||
| 10341 | const Numeric TO = 296.000e0; | |||
| 10342 | const Numeric PO = 1013.000e0; | |||
| 10343 | ||||
| 10344 | // wavenumber range where CKD H2O self continuum is valid | |||
| 10345 | const Numeric VABS_min = -2.000e1; // [cm^-1] | |||
| 10346 | const Numeric VABS_max = 2.000e4; // [cm^-1] | |||
| 10347 | ||||
| 10348 | // Foreign correction factors from joint RHUBC-II/RHUBC-I | |||
| 10349 | // analysis (mt_ckd_3.0) for up to 600cm-1 | |||
| 10350 | const Numeric XFAC_RHU[63] = | |||
| 10351 | { 0.7810,0.8330, | |||
| 10352 | 0.8500,0.8330,0.7810,0.7540,0.8180, | |||
| 10353 | 0.9140,0.9980,0.9830,0.9330,0.8850, | |||
| 10354 | 0.8420,0.8070,0.8000,0.8010,0.8100, | |||
| 10355 | 0.8090,0.8320,0.8180,0.7970,0.8240, | |||
| 10356 | 0.8640,0.8830,0.8830,0.8470,0.8380, | |||
| 10357 | 0.8660,0.9410,1.0400,1.0680,1.1410, | |||
| 10358 | 1.0800,1.0340,1.1550,1.0990,1.0270, | |||
| 10359 | 0.9500,0.8950,0.8150,0.7830,0.7700, | |||
| 10360 | 0.7000,0.7650,0.7750,0.8500,0.9000, | |||
| 10361 | 0.9050,0.9540,1.0200,1.0200,1.0250, | |||
| 10362 | 1.0200,1.1000,1.1250,1.1200,1.1110, | |||
| 10363 | 1.1370,1.1600,1.1490,1.1070,1.0640, | |||
| 10364 | 1.0450}; | |||
| 10365 | ||||
| 10366 | // It is assumed here that f_grid is monotonically increasing with index! | |||
| 10367 | // In future change this return into a change of the loop over | |||
| 10368 | // the frequency f_grid. n_f_new < n_f | |||
| 10369 | Numeric V1ABS = f_grid[0] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 10370 | Numeric V2ABS = f_grid[n_f-1] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 10371 | if ( (V1ABS < VABS_min) || (V1ABS > VABS_max) || | |||
| 10372 | (V2ABS < VABS_min) || (V2ABS > VABS_max) ) | |||
| 10373 | { | |||
| 10374 | out3 << "WARNING:\n" | |||
| 10375 | << " CKD_MT 3.20 H2O foreign continuum:\n" | |||
| 10376 | << " input frequency vector exceeds range of model validity\n" | |||
| 10377 | << " " << FH2O_ckd_mt_320_v1 << "<->" << FH2O_ckd_mt_320_v2 << "cm^-1\n"; | |||
| 10378 | } | |||
| 10379 | ||||
| 10380 | ||||
| 10381 | // ---------------------- subroutine FRN296 ------------------------------ | |||
| 10382 | ||||
| 10383 | // retrieve the appropriate array sequence of the foreign continuum | |||
| 10384 | // arrays of the CKD model. | |||
| 10385 | Numeric DVC = FH2O_ckd_mt_320_dv; | |||
| 10386 | Numeric V1C = V1ABS - DVC; | |||
| 10387 | Numeric V2C = V2ABS + DVC; | |||
| 10388 | ||||
| 10389 | int I1 = (int) ((V1C-FH2O_ckd_mt_320_v1) / FH2O_ckd_mt_320_dv); | |||
| 10390 | if (V1C < FH2O_ckd_mt_320_v1) I1 = -1; | |||
| 10391 | V1C = FH2O_ckd_mt_320_v1 + (FH2O_ckd_mt_320_dv * (Numeric)I1); | |||
| 10392 | ||||
| 10393 | int I2 = (int) ((V2C-FH2O_ckd_mt_320_v1) / FH2O_ckd_mt_320_dv); | |||
| 10394 | ||||
| 10395 | int NPTC = I2-I1+3; | |||
| 10396 | if (NPTC > FH2O_ckd_mt_320_npt) NPTC = FH2O_ckd_mt_320_npt+1; | |||
| 10397 | ||||
| 10398 | V2C = V1C + FH2O_ckd_mt_320_dv * (Numeric)(NPTC-1); | |||
| 10399 | ||||
| 10400 | if (NPTC < 1) | |||
| 10401 | { | |||
| 10402 | out3 << "WARNING:\n" | |||
| 10403 | << " CKD_MT 3.20 H2O foreign continuum:\n" | |||
| 10404 | << " no elements of internal continuum coefficients could be found for the\n" | |||
| 10405 | << " input frequency range.\n" | |||
| 10406 | << " Leave the function without calculating the absorption."; | |||
| 10407 | return; | |||
| 10408 | } | |||
| 10409 | ||||
| 10410 | Vector FH2OT0(NPTC+addF77fields, 0.); // [cm^3/molecules] | |||
| 10411 | ||||
| 10412 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 10413 | { | |||
| 10414 | Index I = I1+J; | |||
| 10415 | if ( (I > 0) && (I <= FH2O_ckd_mt_320_npt) ) | |||
| 10416 | { | |||
| 10417 | FH2OT0[J] = FH2O_ckd_mt_320[I]; | |||
| 10418 | } | |||
| 10419 | } | |||
| 10420 | ||||
| 10421 | // ---------------------- subroutine FRN296 ------------------------------ | |||
| 10422 | ||||
| 10423 | ||||
| 10424 | // Loop pressure/temperature: | |||
| 10425 | for ( Index i = 0 ; i < n_p ; ++i ) | |||
| 10426 | { | |||
| 10427 | // atmospheric state parameters | |||
| 10428 | Numeric Tave = abs_t[i]; // [K] | |||
| 10429 | Numeric Pave = (abs_p[i]*1.000e-2); // [hPa] | |||
| 10430 | Numeric vmrh2o = vmr[i]; // [1] | |||
| 10431 | // FIXME Numeric ph2o = vmrh2o * Pave; // [hPa] | |||
| 10432 | Numeric PFRGN = (Pave/PO) * (1.00000e0 - vmrh2o); // dry air pressure [hPa] | |||
| 10433 | Numeric RFRGN = PFRGN * (TO/Tave); // [hPa] | |||
| 10434 | Numeric WTOT = xLosmt * (Pave/PO) * (T1/Tave); // [molecules/cm^2] | |||
| 10435 | // FIXME Numeric W1 = vmrh2o * WTOT; // [molecules/cm^2] | |||
| 10436 | Numeric XKT = Tave / 1.4387752; // = (T*k_B) / (h*c) | |||
| 10437 | ||||
| 10438 | // Molecular cross section calculated by CKD. | |||
| 10439 | // The cross sectionis calculated on the predefined | |||
| 10440 | // CKD wavenumber grid. | |||
| 10441 | Vector k(NPTC+addF77fields, 0.); // [1/cm] | |||
| 10442 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 10443 | { | |||
| 10444 | Numeric VJ = V1C + (DVC * (Numeric)(J-1)); | |||
| 10445 | ||||
| 10446 | int JFAC = 0; | |||
| 10447 | Numeric FSCAL = 0; | |||
| 10448 | ||||
| 10449 | if ( VJ < 600e0 ) // New condition for MT-CKD 3.2 | |||
| 10450 | { | |||
| 10451 | // Scaling factor below 600cm-1 based on RHUBC-II campaign | |||
| 10452 | JFAC = (int) ((VJ + 10e0)/10e0 + 0.00001e0); | |||
| 10453 | FSCAL = XFAC_RHU[JFAC]; | |||
| 10454 | } | |||
| 10455 | else // same as from version 2.4 apart from the 630e0 in the VF2 equation | |||
| 10456 | { | |||
| 10457 | Numeric VDELSQ1 = pow( (VJ - 255.67e0), 2e0 ); | |||
| 10458 | Numeric VDELmSQ1 = pow( (VJ + 255.67e0), 2e0 ); | |||
| 10459 | Numeric VF1 = pow( ((VJ-255.67e0)/57.83e0), 8e0); | |||
| 10460 | Numeric VmF1 = pow( ((VJ+255.67e0)/57.83e0), 8e0); | |||
| 10461 | // Numeric VF2 = pow( ((VJ)/57.83e0), 8e0); // previous VF2 equation | |||
| 10462 | Numeric VF2 = pow( ((VJ)/630e0), 8e0); // the 630e0 factor is different from previous versions of VF2 equation | |||
| 10463 | ||||
| 10464 | FSCAL = 1.000e0 + (0.06e0 + (-0.42e0)*( (57600e0/(VDELSQ1+57600e0+VF1)) + (57600e0/(VDELmSQ1+57600e0+VmF1)) ) )/(1.000e0 + 0.3e0 * VF2); | |||
| 10465 | } | |||
| 10466 | ||||
| 10467 | Numeric FH2O = FH2OT0[J] * FSCAL; | |||
| 10468 | ||||
| 10469 | ||||
| 10470 | // CKD cross section with radiative field [1/cm] | |||
| 10471 | // The VMRH2O will be multiplied in abs_coefCalc, hence WTOT and not W1 | |||
| 10472 | // as multiplicative term | |||
| 10473 | k[J] = WTOT * RFRGN * (FH2O*1.000e-20) * RADFN_FUN(VJ,XKT); | |||
| 10474 | ||||
| 10475 | } | |||
| 10476 | ||||
| 10477 | // Loop input frequency array. The previously calculated cross section | |||
| 10478 | // has therefore to be interpolated on the input frequencies. | |||
| 10479 | for ( Index s = 0 ; s < n_f ; ++s ) | |||
| 10480 | { | |||
| 10481 | // calculate the associated wave number (= 1/wavelength) | |||
| 10482 | Numeric V = f_grid[s] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 10483 | if ( (V >= 0.000e0) && (V < VABS_max) ) | |||
| 10484 | { | |||
| 10485 | // arts CKD_MT.100 cross section [1/m] | |||
| 10486 | // interpolate the k vector on the f_grid grid | |||
| 10487 | // The factor 100 comes from the conversion from (1/cm) to (1/m) | |||
| 10488 | // of the abs. coeff. | |||
| 10489 | pxsec(s,i) += ScalingFac * 1.000e2 * XINT_FUN(V1C,V2C,DVC,k,V); | |||
| 10490 | } | |||
| 10491 | } | |||
| 10492 | } | |||
| 10493 | ||||
| 10494 | } | |||
| 10495 | ||||
| 10496 | // ===========END WATER VAPOUR MODELS============================================== | |||
| 10497 | ||||
| 10498 | ||||
| 10499 | // ================================================================================= | |||
| 10500 | ||||
| 10501 | //! CKD version 2.4.1 CO2 continuum absorption model | |||
| 10502 | /*! | |||
| 10503 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 10504 | CO2 continuum according to CKD_MT 1.00 [1/m] | |||
| 10505 | \param Cin strength scaling factor [1] | |||
| 10506 | \param model allows user defined input parameter set | |||
| 10507 | (Cin)<br> | |||
| 10508 | or choice of | |||
| 10509 | pre-defined parameters of specific models (see note below). | |||
| 10510 | \param f_grid predefined frequency grid [Hz] | |||
| 10511 | \param abs_p predefined pressure grid [Pa] | |||
| 10512 | \param abs_t predefined temperature grid [K] | |||
| 10513 | \param vmr CO2 volume mixing ratio profile [1] | |||
| 10514 | ||||
| 10515 | \note This absorption model is taken from the FORTRAN77 code of | |||
| 10516 | CKD version 2.4.1 written by<br> | |||
| 10517 | Atmospheric and Environmental Research Inc. (AER),<br> | |||
| 10518 | Radiation and Climate Group<br> | |||
| 10519 | 131 Hartwell Avenue<br> | |||
| 10520 | Lexington, MA 02421, USA<br> | |||
| 10521 | http://www.rtweb.aer.com/continuum_frame.html | |||
| 10522 | ||||
| 10523 | \author Thomas Kuhn | |||
| 10524 | \date 2002-28-08 | |||
| 10525 | */ | |||
| 10526 | void CKD_241_co2 (MatrixView pxsec, | |||
| 10527 | const Numeric Cin, | |||
| 10528 | const String& model, | |||
| 10529 | ConstVectorView f_grid, | |||
| 10530 | ConstVectorView abs_p, | |||
| 10531 | ConstVectorView abs_t _U___attribute((unused)), | |||
| 10532 | ConstVectorView vmr _U___attribute((unused)), | |||
| 10533 | const Verbosity& verbosity) | |||
| 10534 | { | |||
| 10535 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 10536 | ||||
| 10537 | // check the model name about consistency | |||
| 10538 | if ((model != "user") && (model != "CKD241")) | |||
| 10539 | { | |||
| 10540 | ostringstream os; | |||
| 10541 | os << "!!ERROR!!\n" | |||
| 10542 | << "CKDv2.4.1 CO2 continuum:\n" | |||
| 10543 | << "INPUT model name is: " << model << ".\n" | |||
| 10544 | << "VALID model names are user and CKD241\n"; | |||
| 10545 | throw runtime_error(os.str()); | |||
| 10546 | } | |||
| 10547 | ||||
| 10548 | ||||
| 10549 | // scaling factor of the CO2 absorption | |||
| 10550 | Numeric ScalingFac = 0.0000e0; | |||
| 10551 | if ( model == "user" ) | |||
| 10552 | { | |||
| 10553 | ScalingFac = Cin; // input scaling factor of calculated absorption | |||
| 10554 | } | |||
| 10555 | else | |||
| 10556 | { | |||
| 10557 | ScalingFac = 1.0000e0; | |||
| 10558 | } | |||
| 10559 | ||||
| 10560 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 10561 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 10562 | ||||
| 10563 | ||||
| 10564 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 10565 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 10565 , "n_p==abs_t.nelem()") : (void)0); | |||
| 10566 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 10566 , "n_p==vmr.nelem()") : (void)0); | |||
| 10567 | ||||
| 10568 | // Check that dimensions of pxsec are consistent with n_f | |||
| 10569 | // and n_p. It should be [n_f,n_p]: | |||
| 10570 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 10570 , "n_f==pxsec.nrows()") : (void)0); | |||
| 10571 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 10571 , "n_p==pxsec.ncols()") : (void)0); | |||
| 10572 | ||||
| 10573 | ||||
| 10574 | // ************************** CKD stuff ************************************ | |||
| 10575 | ||||
| 10576 | const Numeric xLosmt = 2.686763e19; // [molecules/cm^3] | |||
| 10577 | const Numeric T1 = 273.0e0; | |||
| 10578 | const Numeric TO = 296.0e0; | |||
| 10579 | const Numeric PO = 1013.0e0; | |||
| 10580 | ||||
| 10581 | // wavenumber range where CKD CO2 continuum is valid | |||
| 10582 | const Numeric VABS_min = -2.000e1; // [cm^-1] | |||
| 10583 | const Numeric VABS_max = 1.000e4; // [cm^-1] | |||
| 10584 | ||||
| 10585 | ||||
| 10586 | // It is assumed here that f_grid is monotonically increasing with index! | |||
| 10587 | // In future change this return into a change of the loop over | |||
| 10588 | // the frequency f_grid. n_f_new < n_f | |||
| 10589 | Numeric V1ABS = f_grid[0] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 10590 | Numeric V2ABS = f_grid[n_f-1] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 10591 | if ( (V1ABS < VABS_min) || (V1ABS > VABS_max) || | |||
| 10592 | (V2ABS < VABS_min) || (V2ABS > VABS_max) ) | |||
| 10593 | { | |||
| 10594 | out3 << "WARNING:\n" | |||
| 10595 | << " CKDv2.4.1 CO2 continuum:\n" | |||
| 10596 | << " input frequency vector exceeds range of model validity\n" | |||
| 10597 | << " " << FCO2_ckd_mt_100_v1 << "<->" << FCO2_ckd_mt_100_v2 << "cm^-1\n"; | |||
| 10598 | } | |||
| 10599 | ||||
| 10600 | ||||
| 10601 | // ---------------------- subroutine FRNCO2 ------------------------------ | |||
| 10602 | ||||
| 10603 | // retrieve the appropriate array sequence of the CO2 continuum | |||
| 10604 | // arrays of the CKD model. | |||
| 10605 | Numeric DVC = FCO2_ckd_mt_100_dv; | |||
| 10606 | Numeric V1C = V1ABS - DVC; | |||
| 10607 | Numeric V2C = V2ABS + DVC; | |||
| 10608 | ||||
| 10609 | int I1 = (int) ((V1C-FCO2_ckd_mt_100_v1) / FCO2_ckd_mt_100_dv); | |||
| 10610 | if (V1C < FCO2_ckd_mt_100_v1) I1 = -1; | |||
| 10611 | V1C = FCO2_ckd_mt_100_v1 + (FCO2_ckd_mt_100_dv * (Numeric)I1); | |||
| 10612 | ||||
| 10613 | int I2 = (int) ((V2C-FCO2_ckd_mt_100_v1) / FCO2_ckd_mt_100_dv); | |||
| 10614 | ||||
| 10615 | int NPTC = I2-I1+3; | |||
| 10616 | if (NPTC > FCO2_ckd_mt_100_npt) NPTC = FCO2_ckd_mt_100_npt+1; | |||
| 10617 | ||||
| 10618 | V2C = V1C + FCO2_ckd_mt_100_dv * (Numeric)(NPTC-1); | |||
| 10619 | ||||
| 10620 | if (NPTC < 1) | |||
| 10621 | { | |||
| 10622 | out3 << "WARNING:\n" | |||
| 10623 | << " CKDv2.4.1 CO2 continuum:\n" | |||
| 10624 | << " no elements of internal continuum coefficients could be found for the\n" | |||
| 10625 | << " input frequency range.\n" | |||
| 10626 | << " Leave the function without calculating the absorption."; | |||
| 10627 | return; | |||
| 10628 | } | |||
| 10629 | ||||
| 10630 | Numeric FCO2T0[NPTC+addF77fields]; // [cm^3/molecules] | |||
| 10631 | ||||
| 10632 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 10633 | { | |||
| 10634 | Index I = I1+J; | |||
| 10635 | if ( (I < 1) || (I > FCO2_ckd_mt_100_npt) ) | |||
| 10636 | { | |||
| 10637 | FCO2T0[J] = 0.0e0; | |||
| 10638 | } | |||
| 10639 | else | |||
| 10640 | { | |||
| 10641 | FCO2T0[J] = FCO2_ckd_mt_100[I]; | |||
| 10642 | } | |||
| 10643 | } | |||
| 10644 | ||||
| 10645 | // ---------------------- subroutine FRNCO2 ------------------------------ | |||
| 10646 | ||||
| 10647 | ||||
| 10648 | ||||
| 10649 | ||||
| 10650 | // Loop pressure/temperature: | |||
| 10651 | for ( Index i = 0 ; i < n_p ; ++i ) | |||
| 10652 | { | |||
| 10653 | Numeric Tave = abs_t[i]; // [K] | |||
| 10654 | Numeric Pave = (abs_p[i]*1.000e-2); // [hPa] | |||
| 10655 | // FIXME Numeric vmrco2 = vmr[i]; // [1] | |||
| 10656 | Numeric Rhoave = (Pave/PO) * (TO/Tave); // [hPa] | |||
| 10657 | Numeric WTOT = xLosmt * (Pave/PO) * (T1/Tave); // [molecules/cm^2] | |||
| 10658 | Numeric XKT = Tave / 1.4387752; // = (T*k_B) / (h*c) | |||
| 10659 | ||||
| 10660 | ||||
| 10661 | // Molecular cross section calculated by CKD. | |||
| 10662 | // The cross sectionis calculated on the predefined | |||
| 10663 | // CKD wavenumber grid. | |||
| 10664 | Numeric k[NPTC+addF77fields]; // [1/cm] | |||
| 10665 | k[0] = 0.00e0; // not used array field | |||
| 10666 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 10667 | { | |||
| 10668 | Numeric VJ = V1C + (DVC * (Numeric)(J-1)); | |||
| 10669 | Numeric FCO2 = FCO2T0[J]; | |||
| 10670 | ||||
| 10671 | // CKD cross section times number density with radiative field [1] | |||
| 10672 | // the VMRCO2 will be multiplied in abs_coefCalc | |||
| 10673 | k[J] = ((WTOT * Rhoave) * (FCO2*1.000e-20) * RADFN_FUN(VJ,XKT)); | |||
| 10674 | ||||
| 10675 | } | |||
| 10676 | ||||
| 10677 | ||||
| 10678 | // Loop input frequency array. The previously calculated cross section | |||
| 10679 | // has therefore to be interpolated on the input frequencies. | |||
| 10680 | for ( Index s = 0 ; s < n_f ; ++s ) | |||
| 10681 | { | |||
| 10682 | // calculate the associated wave number (= 1/wavelength) | |||
| 10683 | Numeric V = f_grid[s] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 10684 | if ( (V > 0.000e0) && (V < FCO2_ckd_mt_100_v2) ) | |||
| 10685 | { | |||
| 10686 | // arts cross section [1/m] | |||
| 10687 | // interpolate the k vector on the f_grid grid | |||
| 10688 | pxsec(s,i) += ScalingFac * 1.000e2 * XINT_FUN(V1C,V2C,DVC,k, | |||
| 10689 | NPTC+addF77fields,V); | |||
| 10690 | } | |||
| 10691 | } | |||
| 10692 | } | |||
| 10693 | ||||
| 10694 | } | |||
| 10695 | ||||
| 10696 | // ================================================================================= | |||
| 10697 | ||||
| 10698 | ||||
| 10699 | //! CKD version MT 1.00 CO2 continuum absorption model | |||
| 10700 | /*! | |||
| 10701 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 10702 | CO2 continuum according to CKD_MT 1.00 [1/m] | |||
| 10703 | \param Cin strength scaling factor [1] | |||
| 10704 | \param model allows user defined input parameter set | |||
| 10705 | (Cin)<br> | |||
| 10706 | or choice of | |||
| 10707 | pre-defined parameters of specific models (see note below). | |||
| 10708 | \param f_grid predefined frequency grid [Hz] | |||
| 10709 | \param abs_p predefined pressure grid [Pa] | |||
| 10710 | \param abs_t predefined temperature grid [K] | |||
| 10711 | \param vmr CO2 volume mixing ratio profile [1] | |||
| 10712 | ||||
| 10713 | \note This absorption model is taken from the FORTRAN77 code of | |||
| 10714 | CKD_MT version 1.00 written by<br> | |||
| 10715 | Atmospheric and Environmental Research Inc. (AER),<br> | |||
| 10716 | Radiation and Climate Group<br> | |||
| 10717 | 131 Hartwell Avenue<br> | |||
| 10718 | Lexington, MA 02421, USA<br> | |||
| 10719 | http://www.rtweb.aer.com/continuum_frame.html | |||
| 10720 | ||||
| 10721 | \author Thomas Kuhn | |||
| 10722 | \date 2002-28-08 | |||
| 10723 | */ | |||
| 10724 | void CKD_mt_co2 (MatrixView pxsec, | |||
| 10725 | const Numeric Cin, | |||
| 10726 | const String& model, | |||
| 10727 | ConstVectorView f_grid, | |||
| 10728 | ConstVectorView abs_p, | |||
| 10729 | ConstVectorView abs_t, | |||
| 10730 | ConstVectorView vmr _U___attribute((unused)), | |||
| 10731 | const Verbosity& verbosity) | |||
| 10732 | { | |||
| 10733 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 10734 | ||||
| 10735 | // check the model name about consistency | |||
| 10736 | if ((model != "user") && (model != "CKDMT100")) | |||
| 10737 | { | |||
| 10738 | ostringstream os; | |||
| 10739 | os << "!!ERROR!!\n" | |||
| 10740 | << "CKD_MT.1.00 CO2 continuum:\n" | |||
| 10741 | << "INPUT model name is: " << model << ".\n" | |||
| 10742 | << "VALID model names are user and CKDMT100\n"; | |||
| 10743 | throw runtime_error(os.str()); | |||
| 10744 | } | |||
| 10745 | ||||
| 10746 | ||||
| 10747 | // scaling factor of the CO2 absorption | |||
| 10748 | Numeric ScalingFac = 0.0000e0; | |||
| 10749 | if ( model == "user" ) | |||
| 10750 | { | |||
| 10751 | ScalingFac = Cin; // input scaling factor of calculated absorption | |||
| 10752 | } | |||
| 10753 | else | |||
| 10754 | { | |||
| 10755 | ScalingFac = 1.0000e0; | |||
| 10756 | } | |||
| 10757 | ||||
| 10758 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 10759 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 10760 | ||||
| 10761 | ||||
| 10762 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 10763 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 10763 , "n_p==abs_t.nelem()") : (void)0); | |||
| 10764 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 10764 , "n_p==vmr.nelem()") : (void)0); | |||
| 10765 | ||||
| 10766 | // Check that dimensions of pxsec are consistent with n_f | |||
| 10767 | // and n_p. It should be [n_f,n_p]: | |||
| 10768 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 10768 , "n_f==pxsec.nrows()") : (void)0); | |||
| 10769 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 10769 , "n_p==pxsec.ncols()") : (void)0); | |||
| 10770 | ||||
| 10771 | ||||
| 10772 | // ************************** CKD stuff ************************************ | |||
| 10773 | ||||
| 10774 | const Numeric xLosmt = 2.686763e19; // [molecules/cm^3] | |||
| 10775 | const Numeric T1 = 273.0e0; | |||
| 10776 | const Numeric TO = 296.0e0; | |||
| 10777 | const Numeric PO = 1013.0e0; | |||
| 10778 | ||||
| 10779 | // wavenumber range where CKD CO2 continuum is valid | |||
| 10780 | const Numeric VABS_min = FCO2_ckd_mt_100_v1; // [cm^-1] | |||
| 10781 | const Numeric VABS_max = FCO2_ckd_mt_100_v2; // [cm^-1] | |||
| 10782 | ||||
| 10783 | ||||
| 10784 | // It is assumed here that f_grid is monotonically increasing with index! | |||
| 10785 | // In future change this return into a change of the loop over | |||
| 10786 | // the frequency f_grid. n_f_new < n_f | |||
| 10787 | Numeric V1ABS = f_grid[0] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 10788 | Numeric V2ABS = f_grid[n_f-1] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 10789 | if ( (V1ABS < VABS_min) || (V1ABS > VABS_max) || | |||
| 10790 | (V2ABS < VABS_min) || (V2ABS > VABS_max) ) | |||
| 10791 | { | |||
| 10792 | out3 << "WARNING:\n" | |||
| 10793 | << " CKD_MT 1.00 CO2 continuum:\n" | |||
| 10794 | << " input frequency vector exceeds range of model validity\n" | |||
| 10795 | << " " << FCO2_ckd_mt_100_v1 << "<->" << FCO2_ckd_mt_100_v2 << "cm^-1\n"; | |||
| 10796 | } | |||
| 10797 | ||||
| 10798 | ||||
| 10799 | // ---------------------- subroutine FRNCO2 ------------------------------ | |||
| 10800 | ||||
| 10801 | // retrieve the appropriate array sequence of the CO2 continuum | |||
| 10802 | // arrays of the CKD model. | |||
| 10803 | Numeric DVC = FCO2_ckd_mt_100_dv; | |||
| 10804 | Numeric V1C = V1ABS - DVC; | |||
| 10805 | Numeric V2C = V2ABS + DVC; | |||
| 10806 | ||||
| 10807 | int I1 = (int) ((V1C-FCO2_ckd_mt_100_v1) / FCO2_ckd_mt_100_dv); | |||
| 10808 | if (V1C < FCO2_ckd_mt_100_v1) I1 = -1; | |||
| 10809 | V1C = FCO2_ckd_mt_100_v1 + (FCO2_ckd_mt_100_dv * (Numeric)I1); | |||
| 10810 | ||||
| 10811 | int I2 = (int) ((V2C-FCO2_ckd_mt_100_v1) / FCO2_ckd_mt_100_dv); | |||
| 10812 | ||||
| 10813 | int NPTC = I2-I1+3; | |||
| 10814 | if (NPTC > FCO2_ckd_mt_100_npt) NPTC = FCO2_ckd_mt_100_npt+1; | |||
| 10815 | ||||
| 10816 | V2C = V1C + FCO2_ckd_mt_100_dv * (Numeric)(NPTC-1); | |||
| 10817 | ||||
| 10818 | if (NPTC < 1) | |||
| 10819 | { | |||
| 10820 | out3 << "WARNING:\n" | |||
| 10821 | << " CKD_MT 1.00 CO2 continuum:\n" | |||
| 10822 | << " no elements of internal continuum coefficients could be found for the\n" | |||
| 10823 | << " input frequency range.\n" | |||
| 10824 | << " Leave the function without calculating the absorption."; | |||
| 10825 | return; | |||
| 10826 | } | |||
| 10827 | ||||
| 10828 | Vector FCO2T0(NPTC+addF77fields, 0.); // [cm^3/molecules] | |||
| 10829 | ||||
| 10830 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 10831 | { | |||
| 10832 | Index I = I1+J; | |||
| 10833 | if ( (I > 0) && (I <= FCO2_ckd_mt_100_npt) ) | |||
| 10834 | { | |||
| 10835 | FCO2T0[J] = FCO2_ckd_mt_100[I]; | |||
| 10836 | } | |||
| 10837 | } | |||
| 10838 | ||||
| 10839 | // ---------------------- subroutine FRNCO2 ------------------------------ | |||
| 10840 | ||||
| 10841 | ||||
| 10842 | ||||
| 10843 | ||||
| 10844 | // Loop pressure/temperature: | |||
| 10845 | for ( Index i = 0 ; i < n_p ; ++i ) | |||
| 10846 | { | |||
| 10847 | Numeric Tave = abs_t[i]; // [K] | |||
| 10848 | Numeric Pave = (abs_p[i]*1.000e-2); // [hPa] | |||
| 10849 | // FIXME Numeric vmrco2 = vmr[i]; // [1] | |||
| 10850 | Numeric Rhoave = (Pave/PO) * (TO/Tave); // [hPa] | |||
| 10851 | Numeric WTOT = xLosmt * (Pave/PO) * (T1/Tave); // [molecules/cm^2] | |||
| 10852 | Numeric XKT = Tave / 1.4387752; // = (T*k_B) / (h*c) | |||
| 10853 | ||||
| 10854 | ||||
| 10855 | // Molecular cross section calculated by CKD. | |||
| 10856 | // The cross sectionis calculated on the predefined | |||
| 10857 | // CKD wavenumber grid. | |||
| 10858 | Vector k(NPTC+addF77fields, 0.); // [1/cm] | |||
| 10859 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 10860 | { | |||
| 10861 | Numeric VJ = V1C + (DVC * (Numeric)(J-1)); | |||
| 10862 | Numeric FCO2 = FCO2T0[J]; | |||
| 10863 | ||||
| 10864 | // continuum has been increased in the nu2 band by a factor of 7 | |||
| 10865 | if ( (VJ > 500.0e0) && (VJ < 900.0e0) ) | |||
| 10866 | { | |||
| 10867 | FCO2 = 7.000e0 * FCO2; | |||
| 10868 | } | |||
| 10869 | ||||
| 10870 | // CKD cross section times number density with radiative field [1] | |||
| 10871 | // the VMRCO2 will be multiplied in abs_coefCalc | |||
| 10872 | k[J] = ((WTOT * Rhoave) * (FCO2*1.000e-20) * RADFN_FUN(VJ,XKT)); | |||
| 10873 | ||||
| 10874 | } | |||
| 10875 | ||||
| 10876 | ||||
| 10877 | // Loop input frequency array. The previously calculated cross section | |||
| 10878 | // has therefore to be interpolated on the input frequencies. | |||
| 10879 | for ( Index s = 0 ; s < n_f ; ++s ) | |||
| 10880 | { | |||
| 10881 | // calculate the associated wave number (= 1/wavelength) | |||
| 10882 | Numeric V = f_grid[s] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 10883 | if ( (V > 0.000e0) && (V < FCO2_ckd_mt_100_v2) ) | |||
| 10884 | { | |||
| 10885 | // arts cross section [1/m] | |||
| 10886 | // interpolate the k vector on the f_grid grid | |||
| 10887 | pxsec(s,i) += ScalingFac * 1.000e2 * XINT_FUN(V1C,V2C,DVC,k,V); | |||
| 10888 | } | |||
| 10889 | } | |||
| 10890 | } | |||
| 10891 | ||||
| 10892 | } | |||
| 10893 | // ================================================================================= | |||
| 10894 | ||||
| 10895 | ||||
| 10896 | //! CKD version MT 2.50 CO2 continuum absorption model | |||
| 10897 | /*! | |||
| 10898 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 10899 | CO2 continuum according to CKD_MT 1.00 [1/m] | |||
| 10900 | \param Cin strength scaling factor [1] | |||
| 10901 | \param model allows user defined input parameter set | |||
| 10902 | (Cin)<br> | |||
| 10903 | or choice of | |||
| 10904 | pre-defined parameters of specific models (see note below). | |||
| 10905 | \param f_grid predefined frequency grid [Hz] | |||
| 10906 | \param abs_p predefined pressure grid [Pa] | |||
| 10907 | \param abs_t predefined temperature grid [K] | |||
| 10908 | \param vmr CO2 volume mixing ratio profile [1] | |||
| 10909 | ||||
| 10910 | \note This absorption model is taken from the FORTRAN77 code of | |||
| 10911 | CKD_MT version 2.50 written by<br> | |||
| 10912 | Atmospheric and Environmental Research Inc. (AER),<br> | |||
| 10913 | Radiation and Climate Group<br> | |||
| 10914 | 131 Hartwell Avenue<br> | |||
| 10915 | Lexington, MA 02421, USA<br> | |||
| 10916 | http://www.rtweb.aer.com/continuum_frame.html | |||
| 10917 | ||||
| 10918 | \author Mayuri Tatiya | |||
| 10919 | \date 2014-26-06 | |||
| 10920 | */ | |||
| 10921 | void CKD_mt_250_co2 (MatrixView pxsec, | |||
| 10922 | const Numeric Cin, | |||
| 10923 | const String& model, | |||
| 10924 | ConstVectorView f_grid, | |||
| 10925 | ConstVectorView abs_p, | |||
| 10926 | ConstVectorView abs_t, | |||
| 10927 | ConstVectorView vmr _U___attribute((unused)), | |||
| 10928 | const Verbosity& verbosity) | |||
| 10929 | { | |||
| 10930 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 10931 | ||||
| 10932 | // check the model name about consistency | |||
| 10933 | if ((model != "user") && (model != "CKDMT252")) | |||
| 10934 | { | |||
| 10935 | ostringstream os; | |||
| 10936 | os << "!!ERROR!!\n" | |||
| 10937 | << "CKD_MT.2.50 CO2 continuum:\n" | |||
| 10938 | << "INPUT model name is: " << model << ".\n" | |||
| 10939 | << "VALID model names are user and CKDMT252\n"; | |||
| 10940 | throw runtime_error(os.str()); | |||
| 10941 | } | |||
| 10942 | ||||
| 10943 | ||||
| 10944 | // scaling factor of the CO2 absorption | |||
| 10945 | Numeric ScalingFac = 0.0000e0; | |||
| 10946 | if ( model == "user" ) | |||
| 10947 | { | |||
| 10948 | ScalingFac = Cin; // input scaling factor of calculated absorption | |||
| 10949 | } | |||
| 10950 | else | |||
| 10951 | { | |||
| 10952 | ScalingFac = 1.0000e0; | |||
| 10953 | } | |||
| 10954 | ||||
| 10955 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 10956 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 10957 | ||||
| 10958 | ||||
| 10959 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 10960 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 10960 , "n_p==abs_t.nelem()") : (void)0); | |||
| 10961 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 10961 , "n_p==vmr.nelem()") : (void)0); | |||
| 10962 | ||||
| 10963 | // Check that dimensions of pxsec are consistent with n_f | |||
| 10964 | // and n_p. It should be [n_f,n_p]: | |||
| 10965 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 10965 , "n_f==pxsec.nrows()") : (void)0); | |||
| 10966 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 10966 , "n_p==pxsec.ncols()") : (void)0); | |||
| 10967 | ||||
| 10968 | ||||
| 10969 | // ************************** CKD stuff ************************************ | |||
| 10970 | ||||
| 10971 | const Numeric xLosmt = 2.686763e19; // [molecules/cm^3] | |||
| 10972 | const Numeric T1 = 273.0e0; | |||
| 10973 | const Numeric TO = 296.0e0; | |||
| 10974 | const Numeric PO = 1013.0e0; | |||
| 10975 | // Temparature dependence coefficients for wavenumbers between 2386 | |||
| 10976 | // and 2434. Computed based on (line-coupled) continuum coefficients | |||
| 10977 | // at 250K and 296K, set to unity at T_eff (determined by invariance | |||
| 10978 | // of calculations in this region for IASI low PWV cases). | |||
| 10979 | const Numeric tdep_bandhead[25] = { | |||
| 10980 | 1.44e-01,3.61e-01,5.71e-01,7.63e-01,8.95e-01, | |||
| 10981 | 9.33e-01,8.75e-01,7.30e-01,5.47e-01,3.79e-01, | |||
| 10982 | 2.55e-01,1.78e-01,1.34e-01,1.07e-01,9.06e-02, | |||
| 10983 | 7.83e-02,6.83e-02,6.00e-02,5.30e-02,4.72e-02, | |||
| 10984 | 4.24e-02,3.83e-02,3.50e-02,3.23e-02,3.01e-02}; | |||
| 10985 | // Correction factors for CO2 from 2000-3000 cm-1 (mt_ckd_2.5) | |||
| 10986 | // (stored every 2 cm-1 - same as CO2 continuum). | |||
| 10987 | const Numeric XfacCO2[500] = { | |||
| 10988 | 1.0000,0.9998,0.9997,0.9996,0.9995,0.9994,0.9992,0.9991, | |||
| 10989 | 0.9991,0.9990,0.9990,0.9989,0.9988,0.9988,0.9987,0.9986, | |||
| 10990 | 0.9985,0.9984,0.9983,0.9982,0.9981,0.9980,0.9979,0.9978, | |||
| 10991 | 0.9976, | |||
| 10992 | 0.9975,0.9973,0.9972,0.9970,0.9969,0.9967,0.9965,0.9963, | |||
| 10993 | 0.9961,0.9958,0.9956,0.9954,0.9951,0.9948,0.9946,0.9943, | |||
| 10994 | 0.9940,0.9936,0.9933,0.9929,0.9926,0.9922,0.9918,0.9913, | |||
| 10995 | 0.9909, | |||
| 10996 | 0.9904,0.9899,0.9894,0.9889,0.9884,0.9878,0.9872,0.9866, | |||
| 10997 | 0.9859,0.9853,0.9846,0.9838,0.9831,0.9823,0.9815,0.9806, | |||
| 10998 | 0.9798,0.9789,0.9779,0.9770,0.9759,0.9749,0.9738,0.9727, | |||
| 10999 | 0.9716, | |||
| 11000 | 0.9704,0.9691,0.9679,0.9666,0.9652,0.9638,0.9624,0.9609, | |||
| 11001 | 0.9594,0.9578,0.9562,0.9546,0.9529,0.9511,0.9493,0.9475, | |||
| 11002 | 0.9456,0.9436,0.9417,0.9396,0.9375,0.9354,0.9332,0.9310, | |||
| 11003 | 0.9287, | |||
| 11004 | 0.9264,0.9240,0.9216,0.9191,0.9166,0.9140,0.9114,0.9087, | |||
| 11005 | 0.9060,0.9032,0.9004,0.8976,0.8947,0.8917,0.8887,0.8857, | |||
| 11006 | 0.8827,0.8796,0.8764,0.8732,0.8700,0.8668,0.8635,0.8602, | |||
| 11007 | 0.8568, | |||
| 11008 | 0.8534,0.8500,0.8466,0.8432,0.8397,0.8362,0.8327,0.8292, | |||
| 11009 | 0.8257,0.8221,0.8186,0.8151,0.8115,0.8080,0.8044,0.8009, | |||
| 11010 | 0.7973,0.7938,0.7903,0.7868,0.7833,0.7799,0.7764,0.7730, | |||
| 11011 | 0.7697, | |||
| 11012 | 0.7663,0.7630,0.7597,0.7565,0.7533,0.7502,0.7471,0.7441, | |||
| 11013 | 0.7411,0.7382,0.7354,0.7326,0.7298,0.7272,0.7246,0.7221, | |||
| 11014 | 0.7197,0.7173,0.7150,0.7129,0.7108,0.7088,0.7068,0.7050, | |||
| 11015 | 0.7033, | |||
| 11016 | 0.7016,0.7001,0.6986,0.6973,0.6961,0.6949,0.6939,0.6930, | |||
| 11017 | 0.6921,0.6914,0.6908,0.6903,0.6899,0.6897,0.6895,0.6895, | |||
| 11018 | 0.6895,0.6895,0.6895,0.6895,0.6908,0.7014,0.7121,0.7227, | |||
| 11019 | 0.7552, | |||
| 11020 | 0.8071,0.8400,0.9012,0.9542,1.0044,1.0330,1.0554,1.0766, | |||
| 11021 | 1.0967,1.1160,1.1346,1.1525,1.1700,1.1869,1.2035,1.2196, | |||
| 11022 | 1.2354,1.2509,1.2662,1.2811,1.2958,1.3103,1.3245,1.3386, | |||
| 11023 | 1.3525, | |||
| 11024 | 1.3661,1.3796,1.3930,1.4062,1.4193,1.4322,1.4449,1.4576, | |||
| 11025 | 1.4701,1.4825,1.4949,1.5070,1.5191,1.5311,1.5430,1.5548, | |||
| 11026 | 1.5550,1.5550,1.5550,1.5550,1.5550,1.5550,1.5550,1.5550, | |||
| 11027 | 1.5550, | |||
| 11028 | 1.5550,1.5550,1.5550,1.5550,1.5550,1.5550,1.5550,1.5550, | |||
| 11029 | 1.5550,1.5550,1.5550,1.5549,1.5547,1.5543,1.5539,1.5532, | |||
| 11030 | 1.5525,1.5516,1.5506,1.5494,1.5481,1.5467,1.5452,1.5435, | |||
| 11031 | 1.5417, | |||
| 11032 | 1.5397,1.5377,1.5355,1.5332,1.5308,1.5282,1.5255,1.5228, | |||
| 11033 | 1.5199,1.5169,1.5137,1.5105,1.5072,1.5037,1.5002,1.4966, | |||
| 11034 | 1.4929,1.4890,1.4851,1.4811,1.4771,1.4729,1.4686,1.4643, | |||
| 11035 | 1.4599, | |||
| 11036 | 1.4555,1.4509,1.4463,1.4417,1.4370,1.4322,1.4274,1.4225, | |||
| 11037 | 1.4176,1.4126,1.4076,1.4025,1.3974,1.3923,1.3872,1.3820, | |||
| 11038 | 1.3768,1.3716,1.3663,1.3611,1.3558,1.3505,1.3452,1.3400, | |||
| 11039 | 1.3347, | |||
| 11040 | 1.3294,1.3241,1.3188,1.3135,1.3083,1.3030,1.2978,1.2926, | |||
| 11041 | 1.2874,1.2822,1.2771,1.2720,1.2669,1.2618,1.2568,1.2518, | |||
| 11042 | 1.2468,1.2419,1.2370,1.2322,1.2274,1.2227,1.2180,1.2133, | |||
| 11043 | 1.2087, | |||
| 11044 | 1.2041,1.1996,1.1952,1.1907,1.1864,1.1821,1.1778,1.1737, | |||
| 11045 | 1.1695,1.1654,1.1614,1.1575,1.1536,1.1497,1.1460,1.1422, | |||
| 11046 | 1.1386,1.1350,1.1314,1.1280,1.1246,1.1212,1.1179,1.1147, | |||
| 11047 | 1.1115, | |||
| 11048 | 1.1084,1.1053,1.1024,1.0994,1.0966,1.0938,1.0910,1.0883, | |||
| 11049 | 1.0857,1.0831,1.0806,1.0781,1.0757,1.0734,1.0711,1.0688, | |||
| 11050 | 1.0667,1.0645,1.0624,1.0604,1.0584,1.0565,1.0546,1.0528, | |||
| 11051 | 1.0510, | |||
| 11052 | 1.0493,1.0476,1.0460,1.0444,1.0429,1.0414,1.0399,1.0385, | |||
| 11053 | 1.0371,1.0358,1.0345,1.0332,1.0320,1.0308,1.0296,1.0285, | |||
| 11054 | 1.0275,1.0264,1.0254,1.0244,1.0235,1.0226,1.0217,1.0208, | |||
| 11055 | 1.0200, | |||
| 11056 | 1.0192,1.0184,1.0177,1.0170,1.0163,1.0156,1.0150,1.0143, | |||
| 11057 | 1.0137,1.0132,1.0126,1.0121,1.0116,1.0111,1.0106,1.0101, | |||
| 11058 | 1.0097,1.0092,1.0088,1.0084,1.0081,1.0077,1.0074,1.0070, | |||
| 11059 | 1.0067, | |||
| 11060 | 1.0064,1.0061,1.0058,1.0055,1.0053,1.0050,1.0048,1.0046, | |||
| 11061 | 1.0043,1.0041,1.0039,1.0037,1.0036,1.0034,1.0032,1.0030, | |||
| 11062 | 1.0029,1.0027,1.0026,1.0025,1.0023,1.0022,1.0021,1.0020, | |||
| 11063 | 1.0019, | |||
| 11064 | 1.0018,1.0017,1.0016,1.0015,1.0014,1.0014,1.0013,1.0012, | |||
| 11065 | 1.0011,1.0011,1.0010,1.0010,1.0009,1.0009,1.0008,1.0007, | |||
| 11066 | 1.0006,1.0005,1.0004,1.0003,1.0002,1.0001,1.0000,1.0000, | |||
| 11067 | 1.0000}; | |||
| 11068 | ||||
| 11069 | // wavenumber range where CKD CO2 continuum is valid | |||
| 11070 | const Numeric VABS_min = FCO2_ckd_mt_250_v1; // [cm^-1] | |||
| 11071 | const Numeric VABS_max = FCO2_ckd_mt_250_v2; // [cm^-1] | |||
| 11072 | ||||
| 11073 | ||||
| 11074 | // It is assumed here that f_grid is monotonically increasing with index! | |||
| 11075 | // In future change this return into a change of the loop over | |||
| 11076 | // the frequency f_grid. n_f_new < n_f | |||
| 11077 | Numeric V1ABS = f_grid[0] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 11078 | Numeric V2ABS = f_grid[n_f-1] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 11079 | if ( (V1ABS < VABS_min) || (V1ABS > VABS_max) || | |||
| 11080 | (V2ABS < VABS_min) || (V2ABS > VABS_max) ) | |||
| 11081 | { | |||
| 11082 | out3 << "WARNING:\n" | |||
| 11083 | << " CKD_MT 2.50 CO2 continuum:\n" | |||
| 11084 | << " input frequency vector exceeds range of model validity\n" | |||
| 11085 | << " " << FCO2_ckd_mt_250_v1 << "<->" << FCO2_ckd_mt_250_v2 << "cm^-1\n"; | |||
| 11086 | } | |||
| 11087 | ||||
| 11088 | ||||
| 11089 | // ---------------------- subroutine FRNCO2 ------------------------------ | |||
| 11090 | ||||
| 11091 | // retrieve the appropriate array sequence of the CO2 continuum | |||
| 11092 | // arrays of the CKD model. | |||
| 11093 | Numeric DVC = FCO2_ckd_mt_250_dv; | |||
| 11094 | Numeric V1C = V1ABS - DVC; | |||
| 11095 | Numeric V2C = V2ABS + DVC; | |||
| 11096 | ||||
| 11097 | int I1 = (int) ((V1C-FCO2_ckd_mt_250_v1) / FCO2_ckd_mt_250_dv); | |||
| 11098 | if (V1C < FCO2_ckd_mt_250_v1) I1 = -1; | |||
| 11099 | V1C = FCO2_ckd_mt_250_v1 + (FCO2_ckd_mt_250_dv * (Numeric)I1); | |||
| 11100 | ||||
| 11101 | int I2 = (int) ((V2C-FCO2_ckd_mt_250_v1) / FCO2_ckd_mt_250_dv); | |||
| 11102 | ||||
| 11103 | int NPTC = I2-I1+3; | |||
| 11104 | if (NPTC > FCO2_ckd_mt_250_npt) NPTC = FCO2_ckd_mt_250_npt+1; | |||
| 11105 | ||||
| 11106 | V2C = V1C + FCO2_ckd_mt_250_dv * (Numeric)(NPTC-1); | |||
| 11107 | ||||
| 11108 | if (NPTC < 1) | |||
| 11109 | { | |||
| 11110 | out3 << "WARNING:\n" | |||
| 11111 | << " CKD_MT 2.50 CO2 continuum:\n" | |||
| 11112 | << " no elements of internal continuum coefficients could be found for the\n" | |||
| 11113 | << " input frequency range.\n" | |||
| 11114 | << " Leave the function without calculating the absorption."; | |||
| 11115 | return; | |||
| 11116 | } | |||
| 11117 | ||||
| 11118 | Vector FCO2T0(NPTC+addF77fields, 0.); // [cm^3/molecules] | |||
| 11119 | ||||
| 11120 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 11121 | { | |||
| 11122 | Index I = I1+J; | |||
| 11123 | if ( (I > 0) && (I <= FCO2_ckd_mt_250_npt) ) | |||
| 11124 | { | |||
| 11125 | FCO2T0[J] = FCO2_ckd_mt_250[I]; | |||
| 11126 | } | |||
| 11127 | } | |||
| 11128 | ||||
| 11129 | // ---------------------- subroutine FRNCO2 ------------------------------ | |||
| 11130 | ||||
| 11131 | ||||
| 11132 | ||||
| 11133 | ||||
| 11134 | // Loop pressure/temperature: | |||
| 11135 | for ( Index i = 0 ; i < n_p ; ++i ) | |||
| 11136 | { | |||
| 11137 | Numeric Tave = abs_t[i]; // [K] | |||
| 11138 | Numeric Pave = (abs_p[i]*1.000e-2); // [hPa] | |||
| 11139 | // FIXME Numeric vmrco2 = vmr[i]; // [1] | |||
| 11140 | Numeric Rhoave = (Pave/PO) * (TO/Tave); // [hPa] | |||
| 11141 | Numeric WTOT = xLosmt * (Pave/PO) * (T1/Tave); // [molecules/cm^2] | |||
| 11142 | Numeric XKT = Tave / 1.4387752; // = (T*k_B) / (h*c) | |||
| 11143 | ||||
| 11144 | ||||
| 11145 | // Molecular cross section calculated by CKD. | |||
| 11146 | // The cross sectionis calculated on the predefined | |||
| 11147 | // CKD wavenumber grid. | |||
| 11148 | Vector k(NPTC+addF77fields, 0.); // [1/cm] | |||
| 11149 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 11150 | { | |||
| 11151 | Numeric VJ = V1C + (DVC * (Numeric)(J-1)); | |||
| 11152 | Numeric FCO2 = FCO2T0[J]; | |||
| 11153 | const Index I1J = I1 + J-1; | |||
| 11154 | ||||
| 11155 | // CKD MT 2.0 This continuum differs from mt_ck_1.3 in that an entirely | |||
| 11156 | // new co2 continuum has been developed based on the line coupling parameters from | |||
| 11157 | // Hartmann's group as distributed with hitran. This continuum must be used with lblrtm_v11 | |||
| 11158 | // and spectral line parameters including Hartmann's line parameters for co2. | |||
| 11159 | // Based on recent validation studies, a scaling of the continuum for v3 is required to achieve an acceptable result | |||
| 11160 | // at 2385 cm-1, the 'bandhead' of v3. Clough et al., presentation at EGU 2007 | |||
| 11161 | ||||
| 11162 | ||||
| 11163 | if ( (I1J >= 1196) && (I1J <= 1220) ) | |||
| 11164 | { | |||
| 11165 | FCO2 = pow( (Tave/246.0e0), tdep_bandhead[I1J-1196] ) * FCO2; | |||
| 11166 | } | |||
| 11167 | // CKD MT 2.5 Adjustment to the original scaling made (temperature dependece added) | |||
| 11168 | if ( (VJ > 2000.0e0) && (VJ < 2998.0e0) ) | |||
| 11169 | { | |||
| 11170 | int JFAC = int( (VJ - 1998.00e0)/2.00e0 + 0.00001e0) ; | |||
| 11171 | FCO2 = XfacCO2[JFAC] * FCO2; | |||
| 11172 | } | |||
| 11173 | ||||
| 11174 | ||||
| 11175 | // CKD cross section times number density with radiative field [1] | |||
| 11176 | // the VMRCO2 will be multiplied in abs_coefCalc | |||
| 11177 | k[J] = ((WTOT * Rhoave) * (FCO2*1.000e-20) * RADFN_FUN(VJ,XKT)); | |||
| 11178 | ||||
| 11179 | } | |||
| 11180 | ||||
| 11181 | ||||
| 11182 | // Loop input frequency array. The previously calculated cross section | |||
| 11183 | // has therefore to be interpolated on the input frequencies. | |||
| 11184 | for ( Index s = 0 ; s < n_f ; ++s ) | |||
| 11185 | { | |||
| 11186 | // calculate the associated wave number (= 1/wavelength) | |||
| 11187 | Numeric V = f_grid[s] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 11188 | if ( (V > 0.000e0) && (V < FCO2_ckd_mt_250_v2) ) | |||
| 11189 | { | |||
| 11190 | // arts cross section [1/m] | |||
| 11191 | // interpolate the k vector on the f_grid grid | |||
| 11192 | pxsec(s,i) += ScalingFac * 1.000e2 * XINT_FUN(V1C,V2C,DVC,k,V); | |||
| 11193 | } | |||
| 11194 | } | |||
| 11195 | } | |||
| 11196 | ||||
| 11197 | } | |||
| 11198 | ||||
| 11199 | // ================================================================================= | |||
| 11200 | //! CKD version MT 1.00 N2-N2 collision induced absorption (rotational band) | |||
| 11201 | /*! | |||
| 11202 | Model reference: | |||
| 11203 | Borysow, A, and L. Frommhold, | |||
| 11204 | "Collision-induced rototranslational absorption spectra of N2-N2 | |||
| 11205 | pairs for temperatures from 50 to 300 K", The | |||
| 11206 | Astrophysical Journal, 311, 1043-1057, 1986. | |||
| 11207 | ||||
| 11208 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 11209 | N2-N2 CIA rot. band according to CKD_MT 1.00 [1/m] | |||
| 11210 | \param Cin strength scaling factor [1] | |||
| 11211 | \param model allows user defined input parameter set | |||
| 11212 | (Cin)<br> | |||
| 11213 | or choice of | |||
| 11214 | pre-defined parameters of specific models (see note below). | |||
| 11215 | \param f_grid predefined frequency grid [Hz] | |||
| 11216 | \param abs_p predefined pressure grid [Pa] | |||
| 11217 | \param abs_t predefined temperature grid [K] | |||
| 11218 | \param vmr N2 volume mixing ratio profile [1] | |||
| 11219 | ||||
| 11220 | \remark Borysow, A, and L. Frommhold,<br> | |||
| 11221 | Collision-induced rototranslational absorption spectra of N2-N2 | |||
| 11222 | pairs for temperatures from 50 to 300 K,<br> | |||
| 11223 | The Astrophysical Journal, 311, 1043-1057, 1986. | |||
| 11224 | ||||
| 11225 | \note This absorption model is taken from the FORTRAN77 code of | |||
| 11226 | CKD_MT version 1.00 written by<br> | |||
| 11227 | Atmospheric and Environmental Research Inc. (AER),<br> | |||
| 11228 | Radiation and Climate Group<br> | |||
| 11229 | 131 Hartwell Avenue<br> | |||
| 11230 | Lexington, MA 02421, USA<br> | |||
| 11231 | http://www.rtweb.aer.com/continuum_frame.html | |||
| 11232 | ||||
| 11233 | \author Thomas Kuhn | |||
| 11234 | \date 2002-28-08 | |||
| 11235 | */ | |||
| 11236 | void CKD_mt_CIArot_n2 (MatrixView pxsec, | |||
| 11237 | const Numeric Cin, | |||
| 11238 | const String& model, | |||
| 11239 | ConstVectorView f_grid, | |||
| 11240 | ConstVectorView abs_p, | |||
| 11241 | ConstVectorView abs_t, | |||
| 11242 | ConstVectorView vmr, | |||
| 11243 | const Verbosity& verbosity) | |||
| 11244 | { | |||
| 11245 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 11246 | ||||
| 11247 | // check the model name about consistency | |||
| 11248 | if ((model != "user") && (model != "CKDMT100")) | |||
| 11249 | { | |||
| 11250 | ostringstream os; | |||
| 11251 | os << "!!ERROR!!\n" | |||
| 11252 | << "CKD_MT1.00 N2 CIA rotational band:\n" | |||
| 11253 | << "INPUT model name is: " << model << ".\n" | |||
| 11254 | << "VALID model names are user and CKDMT100\n"; | |||
| 11255 | throw runtime_error(os.str()); | |||
| 11256 | } | |||
| 11257 | ||||
| 11258 | ||||
| 11259 | // scaling factor of the N2-N2 CIA rot. band absorption | |||
| 11260 | Numeric ScalingFac = 0.0000e0; | |||
| 11261 | if ( model == "user" ) | |||
| 11262 | { | |||
| 11263 | ScalingFac = Cin; // input scaling factor of calculated absorption | |||
| 11264 | } | |||
| 11265 | else | |||
| 11266 | { | |||
| 11267 | ScalingFac = 1.0000e0; | |||
| 11268 | } | |||
| 11269 | ||||
| 11270 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 11271 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 11272 | ||||
| 11273 | ||||
| 11274 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 11275 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 11275 , "n_p==abs_t.nelem()") : (void)0); | |||
| 11276 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 11276 , "n_p==vmr.nelem()") : (void)0); | |||
| 11277 | ||||
| 11278 | // Check that dimensions of pxsec are consistent with n_f | |||
| 11279 | // and n_p. It should be [n_f,n_p]: | |||
| 11280 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 11280 , "n_f==pxsec.nrows()") : (void)0); | |||
| 11281 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 11281 , "n_p==pxsec.ncols()") : (void)0); | |||
| 11282 | ||||
| 11283 | ||||
| 11284 | // ************************** CKD stuff ************************************ | |||
| 11285 | ||||
| 11286 | // FIXME const Numeric xLosmt = 2.686763e19; // Loschmidt Number [molecules/cm^3] | |||
| 11287 | const Numeric T1 = 273.0e0; | |||
| 11288 | const Numeric TO = 296.0e0; | |||
| 11289 | const Numeric PO = 1013.0e0; | |||
| 11290 | ||||
| 11291 | ||||
| 11292 | // wavenumber range where CKD H2O self continuum is valid | |||
| 11293 | const Numeric VABS_min = -1.000e1; // [cm^-1] | |||
| 11294 | const Numeric VABS_max = 3.500e2; // [cm^-1] | |||
| 11295 | ||||
| 11296 | ||||
| 11297 | // It is assumed here that f_grid is monotonically increasing with index! | |||
| 11298 | // In future change this return into a change of the loop over | |||
| 11299 | // the frequency f_grid. n_f_new < n_f | |||
| 11300 | Numeric V1ABS = f_grid[0] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 11301 | Numeric V2ABS = f_grid[n_f-1] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 11302 | if ( (V1ABS < VABS_min) || (V1ABS > VABS_max) || | |||
| 11303 | (V2ABS < VABS_min) || (V2ABS > VABS_max) ) | |||
| 11304 | { | |||
| 11305 | out3 << "WARNING:\n" | |||
| 11306 | << " CKD_MT 1.00 N2-N2 CIA rotational band:\n" | |||
| 11307 | << " input frequency vector exceeds range of model validity\n" | |||
| 11308 | << " " << N2N2_CT296_ckd_mt_100_v1 << "<->" << N2N2_CT220_ckd_mt_100_v2 << "cm^-1\n"; | |||
| 11309 | } | |||
| 11310 | ||||
| 11311 | ||||
| 11312 | // ------------------- subroutine N2R296/N2R220 ---------------------------- | |||
| 11313 | ||||
| 11314 | if (N2N2_CT296_ckd_mt_100_v1 != N2N2_CT220_ckd_mt_100_v1) | |||
| 11315 | { | |||
| 11316 | ostringstream os; | |||
| 11317 | os << "!!ERROR!!\n" | |||
| 11318 | << "CKD_MT 1.00 N2-N2 CIA rotational band:\n" | |||
| 11319 | << "parameter V1 not the same for different ref. temperatures.\n"; | |||
| 11320 | throw runtime_error(os.str()); | |||
| 11321 | } | |||
| 11322 | if (N2N2_CT296_ckd_mt_100_v2 != N2N2_CT220_ckd_mt_100_v2) | |||
| 11323 | { | |||
| 11324 | ostringstream os; | |||
| 11325 | os << "!!ERROR!!\n" | |||
| 11326 | << "CKD_MT 1.00 N2-N2 CIA rotational band:\n" | |||
| 11327 | << "parameter V2 not the same for different ref. temperatures.\n"; | |||
| 11328 | throw runtime_error(os.str()); | |||
| 11329 | } | |||
| 11330 | if (N2N2_CT296_ckd_mt_100_dv != N2N2_CT220_ckd_mt_100_dv) | |||
| 11331 | { | |||
| 11332 | ostringstream os; | |||
| 11333 | os << "!!ERROR!!\n" | |||
| 11334 | << "CKD_MT 1.00 N2-N2 CIA rotational band:\n" | |||
| 11335 | << "parameter DV not the same for different ref. temperatures.\n"; | |||
| 11336 | throw runtime_error(os.str()); | |||
| 11337 | } | |||
| 11338 | if (N2N2_CT296_ckd_mt_100_npt != N2N2_CT220_ckd_mt_100_npt) | |||
| 11339 | { | |||
| 11340 | ostringstream os; | |||
| 11341 | os << "!!ERROR!!\n" | |||
| 11342 | << "CKD_MT 1.00 N2-N2 CIA rotational band:\n" | |||
| 11343 | << "parameter NPT not the same for different ref. temperatures.\n"; | |||
| 11344 | throw runtime_error(os.str()); | |||
| 11345 | } | |||
| 11346 | ||||
| 11347 | // retrieve the appropriate array sequence of the self continuum | |||
| 11348 | // arrays of the CKD model. | |||
| 11349 | Numeric DVC = N2N2_CT296_ckd_mt_100_dv; | |||
| 11350 | Numeric V1C = V1ABS - DVC; | |||
| 11351 | Numeric V2C = V2ABS + DVC; | |||
| 11352 | ||||
| 11353 | int I1 = (int) ((V1C-N2N2_CT296_ckd_mt_100_v1) / N2N2_CT296_ckd_mt_100_dv); | |||
| 11354 | if (V1C < N2N2_CT296_ckd_mt_100_v1) I1 = -1; | |||
| 11355 | V1C = N2N2_CT296_ckd_mt_100_v1 + (N2N2_CT296_ckd_mt_100_dv * (Numeric)I1); | |||
| 11356 | ||||
| 11357 | int I2 = (int) ((V2C-N2N2_CT296_ckd_mt_100_v1) / N2N2_CT296_ckd_mt_100_dv); | |||
| 11358 | ||||
| 11359 | int NPTC = I2-I1+3; | |||
| 11360 | if (NPTC > N2N2_CT296_ckd_mt_100_npt) NPTC = N2N2_CT296_ckd_mt_100_npt+1; | |||
| 11361 | ||||
| 11362 | V2C = V1C + N2N2_CT296_ckd_mt_100_dv * (Numeric)(NPTC-1); | |||
| 11363 | ||||
| 11364 | if (NPTC < 1) | |||
| 11365 | { | |||
| 11366 | out3 << "WARNING:\n" | |||
| 11367 | << " CKD_MT 1.00 N2-N2 CIA rotational band:\n" | |||
| 11368 | << " no elements of internal continuum coefficients could be found for the\n" | |||
| 11369 | << " input frequency range.\n" | |||
| 11370 | << " Leave the function without calculating the absorption.\n"; | |||
| 11371 | return; | |||
| 11372 | } | |||
| 11373 | ||||
| 11374 | Vector C0(NPTC+addF77fields, 0.); // [cm^3/molecules] | |||
| 11375 | Vector C1(NPTC+addF77fields, 0.); // [cm^3/molecules] | |||
| 11376 | ||||
| 11377 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 11378 | { | |||
| 11379 | Index I = I1+J; | |||
| 11380 | if ( (I > 0) && (I <= N2N2_CT296_ckd_mt_100_npt) ) | |||
| 11381 | { | |||
| 11382 | C0[J] = N2N2_CT296_ckd_mt_100[I]; // at T=296 K | |||
| 11383 | C1[J] = N2N2_CT220_ckd_mt_100[I]; // at T=260 K | |||
| 11384 | } | |||
| 11385 | } | |||
| 11386 | ||||
| 11387 | // ------------------- subroutine N2R296/N2R220 ---------------------------- | |||
| 11388 | ||||
| 11389 | ||||
| 11390 | ||||
| 11391 | ||||
| 11392 | // Loop pressure/temperature: | |||
| 11393 | for ( Index i = 0 ; i < n_p ; ++i ) | |||
| 11394 | { | |||
| 11395 | Numeric Tave = abs_t[i]; // [K] | |||
| 11396 | Numeric Pave = (abs_p[i]*1.000e-2); // [hPa] | |||
| 11397 | Numeric vmrn2 = vmr[i]; // [1] | |||
| 11398 | Numeric facfac = vmrn2 * (Pave/PO) * (Pave/PO) * | |||
| 11399 | (T1/Tave) * (T1/Tave); | |||
| 11400 | ||||
| 11401 | Numeric XKT = Tave / 1.4387752; // = (T*k_B) / (h*c) | |||
| 11402 | Numeric Tfac = (Tave - TO) / (220.0e0 - TO); | |||
| 11403 | ||||
| 11404 | // Molecular cross section calculated by CKD. | |||
| 11405 | // The cross sectionis calculated on the predefined | |||
| 11406 | // CKD wavenumber grid. | |||
| 11407 | Vector k(NPTC+addF77fields, 0.); // [1/cm] | |||
| 11408 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 11409 | { | |||
| 11410 | Numeric VJ = V1C + (DVC * (Numeric)(J-1)); | |||
| 11411 | Numeric SN2 = 0.000e0; | |||
| 11412 | if ( (C0[J] > 0.000e0) && (C1[J] > 0.000e0) ) | |||
| 11413 | { | |||
| 11414 | SN2 = facfac* C0[J] * pow( (C1[J]/C0[J]), Tfac ); | |||
| 11415 | } | |||
| 11416 | ||||
| 11417 | // CKD cross section with radiative field | |||
| 11418 | k[J] = SN2 * RADFN_FUN(VJ,XKT); // [1] | |||
| 11419 | } | |||
| 11420 | ||||
| 11421 | ||||
| 11422 | // Loop input frequency array. The previously calculated cross section | |||
| 11423 | // has therefore to be interpolated on the input frequencies. | |||
| 11424 | for ( Index s = 0 ; s < n_f ; ++s ) | |||
| 11425 | { | |||
| 11426 | // calculate the associated wave number (= 1/wavelength) | |||
| 11427 | Numeric V = f_grid[s] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 11428 | if ( (V > 0.000e0) && (V < N2N2_CT220_ckd_mt_100_v2) ) | |||
| 11429 | { | |||
| 11430 | // arts cross section [1/m] | |||
| 11431 | // interpolate the k vector on the f_grid grid | |||
| 11432 | pxsec(s,i) += ScalingFac * 1.000e2 * XINT_FUN(V1C,V2C,DVC,k,V); | |||
| 11433 | } | |||
| 11434 | } | |||
| 11435 | } | |||
| 11436 | ||||
| 11437 | } | |||
| 11438 | ||||
| 11439 | // ================================================================================= | |||
| 11440 | ||||
| 11441 | //! CKD version MT 1.00 N2-N2 collision induced absorption (fundamental band) | |||
| 11442 | /*! | |||
| 11443 | Model reference: | |||
| 11444 | version_1 of the Nitrogen Collision Induced Fundamental | |||
| 11445 | Lafferty, W.J., A.M. Solodov,A. Weber, W.B. Olson and | |||
| 11446 | J._M. Hartmann, Infrared collision-induced absorption by | |||
| 11447 | N2 near 4.3 microns for atmospheric applications: | |||
| 11448 | Measurements and emprirical modeling, Appl. Optics, 35, | |||
| 11449 | 5911-5917, (1996). | |||
| 11450 | ||||
| 11451 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 11452 | N2-N2 CIA fundamental band according to CKD_MT 1.00 [1/m] | |||
| 11453 | \param Cin strength scaling factor [1] | |||
| 11454 | \param model allows user defined input parameter set | |||
| 11455 | (Cin)<br> | |||
| 11456 | or choice of | |||
| 11457 | pre-defined parameters of specific models (see note below). | |||
| 11458 | \param f_grid predefined frequency grid [Hz] | |||
| 11459 | \param abs_p predefined pressure grid [Pa] | |||
| 11460 | \param abs_t predefined temperature grid [K] | |||
| 11461 | \param vmr N2 volume mixing ratio profile [1] | |||
| 11462 | ||||
| 11463 | \remark Lafferty, W.J., A.M. Solodov,A. Weber, W.B. Olson and | |||
| 11464 | J._M. Hartmann,<br> | |||
| 11465 | Infrared collision-induced absorption by | |||
| 11466 | N2 near 4.3 microns for atmospheric applications: | |||
| 11467 | Measurements and emprirical modeling, <br> | |||
| 11468 | Appl. Optics, 35, 5911-5917, (1996) | |||
| 11469 | ||||
| 11470 | \note This absorption model is taken from the FORTRAN77 code of | |||
| 11471 | CKD_MT version 1.00 written by<br> | |||
| 11472 | Atmospheric and Environmental Research Inc. (AER),<br> | |||
| 11473 | Radiation and Climate Group<br> | |||
| 11474 | 131 Hartwell Avenue<br> | |||
| 11475 | Lexington, MA 02421, USA<br> | |||
| 11476 | http://www.rtweb.aer.com/continuum_frame.html | |||
| 11477 | ||||
| 11478 | ||||
| 11479 | \author Thomas Kuhn | |||
| 11480 | \date 2002-28-08 | |||
| 11481 | */ | |||
| 11482 | void CKD_mt_CIAfun_n2 (MatrixView pxsec, | |||
| 11483 | const Numeric Cin, | |||
| 11484 | const String& model, | |||
| 11485 | ConstVectorView f_grid, | |||
| 11486 | ConstVectorView abs_p, | |||
| 11487 | ConstVectorView abs_t, | |||
| 11488 | ConstVectorView vmr, | |||
| 11489 | const Verbosity& verbosity) | |||
| 11490 | { | |||
| 11491 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 11492 | ||||
| 11493 | // check the model name about consistency | |||
| 11494 | if ((model != "user") && (model != "CKDMT100")) | |||
| 11495 | { | |||
| 11496 | ostringstream os; | |||
| 11497 | os << "!!ERROR!!\n" | |||
| 11498 | << "CKD_MT1.00 N2 CIA fundamental band:\n" | |||
| 11499 | << "INPUT model name is: " << model << ".\n" | |||
| 11500 | << "VALID model names are user and CKDMT100\n"; | |||
| 11501 | throw runtime_error(os.str()); | |||
| 11502 | } | |||
| 11503 | ||||
| 11504 | ||||
| 11505 | // scaling factor of the N2-N2 CIA fundamental band absorption | |||
| 11506 | Numeric ScalingFac = 1.0000e0; | |||
| 11507 | if ( model == "user" ) | |||
| 11508 | { | |||
| 11509 | ScalingFac = Cin; // input scaling factor of calculated absorption | |||
| 11510 | } | |||
| 11511 | ||||
| 11512 | ||||
| 11513 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 11514 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 11515 | ||||
| 11516 | ||||
| 11517 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 11518 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 11518 , "n_p==abs_t.nelem()") : (void)0); | |||
| 11519 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 11519 , "n_p==vmr.nelem()") : (void)0); | |||
| 11520 | ||||
| 11521 | // Check that dimensions of pxsec are consistent with n_f | |||
| 11522 | // and n_p. It should be [n_f,n_p]: | |||
| 11523 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 11523 , "n_f==pxsec.nrows()") : (void)0); | |||
| 11524 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 11524 , "n_p==pxsec.ncols()") : (void)0); | |||
| 11525 | ||||
| 11526 | ||||
| 11527 | // ************************** CKD stuff ************************************ | |||
| 11528 | ||||
| 11529 | const Numeric xLosmt = 2.686763e19; // Loschmidt Number [molecules/cm^3] | |||
| 11530 | const Numeric T1 = 273.0e0; | |||
| 11531 | const Numeric TO = 296.0e0; | |||
| 11532 | const Numeric PO = 1013.0e0; | |||
| 11533 | const Numeric a1 = 0.8387e0; | |||
| 11534 | const Numeric a2 = 0.0754e0; | |||
| 11535 | ||||
| 11536 | ||||
| 11537 | // It is assumed here that f_grid is monotonically increasing with index! | |||
| 11538 | // In future change this return into a change of the loop over | |||
| 11539 | // the frequency f_grid. n_f_new < n_f | |||
| 11540 | Numeric V1ABS = f_grid[0] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 11541 | Numeric V2ABS = f_grid[n_f-1] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 11542 | if ( (V1ABS < N2N2_N2F_ckd_mt_100_v1) || (V1ABS > N2N2_N2F_ckd_mt_100_v2) || | |||
| 11543 | (V2ABS < N2N2_N2F_ckd_mt_100_v1) || (V2ABS > N2N2_N2F_ckd_mt_100_v2) ) | |||
| 11544 | { | |||
| 11545 | out3 << "WARNING:\n" | |||
| 11546 | << " CKD_MT 1.00 N2-N2 CIA fundamental band:\n" | |||
| 11547 | << " input frequency vector exceeds range of model validity\n" | |||
| 11548 | << " " << N2N2_N2F_ckd_mt_100_v1 << "<->" << N2N2_N2F_ckd_mt_100_v2 << "cm^-1\n"; | |||
| 11549 | } | |||
| 11550 | ||||
| 11551 | ||||
| 11552 | // ------------------- subroutine N2_VER_1 ---------------------------- | |||
| 11553 | ||||
| 11554 | // retrieve the appropriate array sequence of the self continuum | |||
| 11555 | // arrays of the CKD model. | |||
| 11556 | Numeric DVC = N2N2_N2F_ckd_mt_100_dv; | |||
| 11557 | Numeric V1C = V1ABS - DVC; | |||
| 11558 | Numeric V2C = V2ABS + DVC; | |||
| 11559 | ||||
| 11560 | int I1 = (int) ((V1C-N2N2_N2F_ckd_mt_100_v1) / N2N2_N2F_ckd_mt_100_dv); | |||
| 11561 | if (V1C < N2N2_N2F_ckd_mt_100_v1) I1 = -1; | |||
| 11562 | V1C = N2N2_N2F_ckd_mt_100_v1 + (N2N2_N2F_ckd_mt_100_dv * (Numeric)I1); | |||
| 11563 | ||||
| 11564 | int I2 = (int) ((V2C-N2N2_N2F_ckd_mt_100_v1) / N2N2_N2F_ckd_mt_100_dv); | |||
| 11565 | ||||
| 11566 | int NPTC = I2-I1+3; | |||
| 11567 | if (NPTC > N2N2_N2F_ckd_mt_100_npt) NPTC = N2N2_N2F_ckd_mt_100_npt+1; | |||
| 11568 | ||||
| 11569 | V2C = V1C + N2N2_N2F_ckd_mt_100_dv * (Numeric)(NPTC-1); | |||
| 11570 | ||||
| 11571 | if (NPTC < 1) | |||
| 11572 | { | |||
| 11573 | out3 << "WARNING:\n" | |||
| 11574 | << " CKD_MT 1.00 N2-N2 CIA fundamental band:\n" | |||
| 11575 | << " no elements of internal continuum coefficients could be found for the\n" | |||
| 11576 | << " input frequency range.\n"; | |||
| 11577 | return; | |||
| 11578 | } | |||
| 11579 | ||||
| 11580 | Vector xn2(NPTC+addF77fields, 0.); | |||
| 11581 | Vector xn2t(NPTC+addF77fields, 0.); | |||
| 11582 | ||||
| 11583 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 11584 | { | |||
| 11585 | Index I = I1+J; | |||
| 11586 | if ( (I > 0) && (I <= N2N2_N2F_ckd_mt_100_npt) ) | |||
| 11587 | { | |||
| 11588 | xn2[J] = N2N2_N2F_ckd_mt_100[I]; | |||
| 11589 | xn2t[J] = N2N2_N2Ft_ckd_mt_100[I]; | |||
| 11590 | } | |||
| 11591 | } | |||
| 11592 | ||||
| 11593 | // ------------------- subroutine N2_VER_1 ---------------------------- | |||
| 11594 | ||||
| 11595 | ||||
| 11596 | ||||
| 11597 | ||||
| 11598 | // Loop pressure/temperature: | |||
| 11599 | for ( Index i = 0 ; i < n_p ; ++i ) | |||
| 11600 | { | |||
| 11601 | Numeric Tave = abs_t[i]; // [K] | |||
| 11602 | Numeric Pave = (abs_p[i]*1.000e-2); // [hPa] | |||
| 11603 | Numeric vmrn2 = vmr[i]; // [1] | |||
| 11604 | Numeric WTOT = xLosmt * (Pave/PO) * (T1/Tave); // [molecules/cm^2] | |||
| 11605 | Numeric tau_fac= WTOT * (Pave/PO) * (T1/Tave); | |||
| 11606 | ||||
| 11607 | Numeric XKT = Tave / 1.4387752e0; // = (T*k_B) / (h*c) | |||
| 11608 | ||||
| 11609 | // FIXME Numeric Tfac = (Tave - TO) / (220.0e0 - TO); // [1] | |||
| 11610 | Numeric xktfac = (1.000e0/TO) - (1.000e0/Tave); // [1/K] | |||
| 11611 | Numeric factor = 0.000e0; | |||
| 11612 | if (vmrn2 > VMRCalcLimit) | |||
| 11613 | { | |||
| 11614 | factor = (1.000e0 / xLosmt) * (1.000e0/vmrn2) * (a1 - a2*(Tave/TO)); | |||
| 11615 | } | |||
| 11616 | ||||
| 11617 | // Molecular cross section calculated by CKD. | |||
| 11618 | // The cross sectionis calculated on the predefined | |||
| 11619 | // CKD wavenumber grid. | |||
| 11620 | Vector k(NPTC+addF77fields+1, 0.); // [1/cm] | |||
| 11621 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 11622 | { | |||
| 11623 | Numeric VJ = V1C + (DVC * (Numeric)(J-1)); | |||
| 11624 | Numeric SN2 = 0.000e0; | |||
| 11625 | if (xn2[J] > 0.000e0) | |||
| 11626 | { | |||
| 11627 | Numeric C0 = factor * xn2[J] * exp(xn2t[J]*xktfac) / VJ; | |||
| 11628 | SN2 = tau_fac * C0; | |||
| 11629 | } | |||
| 11630 | ||||
| 11631 | // CKD cross section with radiative field | |||
| 11632 | k[J] = SN2 * RADFN_FUN(VJ,XKT); // [1/cm] | |||
| 11633 | } | |||
| 11634 | ||||
| 11635 | ||||
| 11636 | // Loop input frequency array. The previously calculated cross section | |||
| 11637 | // has therefore to be interpolated on the input frequencies. | |||
| 11638 | for ( Index s = 0 ; s < n_f ; ++s ) | |||
| 11639 | { | |||
| 11640 | // calculate the associated wave number (= 1/wavelength) | |||
| 11641 | Numeric V = f_grid[s] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 11642 | if ( (V > N2N2_N2F_ckd_mt_100_v1) && (V < N2N2_N2F_ckd_mt_100_v2) ) | |||
| 11643 | { | |||
| 11644 | // arts cross section [1/m] | |||
| 11645 | // interpolate the k vector on the f_grid grid | |||
| 11646 | pxsec(s,i) += ScalingFac * 1.000e2 * XINT_FUN(V1C,V2C,DVC,k,V); | |||
| 11647 | } | |||
| 11648 | } | |||
| 11649 | } | |||
| 11650 | ||||
| 11651 | } | |||
| 11652 | // ================================================================================= | |||
| 11653 | //! CKD version MT 2.50 N2-N2 collision induced absorption (rotational band) | |||
| 11654 | /*! | |||
| 11655 | Model reference: | |||
| 11656 | Borysow, A, and L. Frommhold, | |||
| 11657 | "Collision-induced rototranslational absorption spectra of N2-N2 | |||
| 11658 | pairs for temperatures from 50 to 300 K", The | |||
| 11659 | Astrophysical Journal, 311, 1043-1057, 1986. | |||
| 11660 | ||||
| 11661 | Updated 2014/06/26 based on: | |||
| 11662 | ||||
| 11663 | Boissoles, J., C. Boulet, R.H. Tipping, A. Brown and Q. Ma, | |||
| 11664 | "Theoretical CAlculations of the Translation-Rotation | |||
| 11665 | Collision-Induced Absorption in N2-N2, O2-O2 and N2-O2 Pairs", | |||
| 11666 | J.Quant. Spec. Rad. Transfer, 82,505 (2003). | |||
| 11667 | ||||
| 11668 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 11669 | N2-N2 CIA rot. band according to CKD_MT 1.00 [1/m] | |||
| 11670 | \param Cin strength scaling factor [1] | |||
| 11671 | \param model allows user defined input parameter set | |||
| 11672 | (Cin)<br> | |||
| 11673 | or choice of | |||
| 11674 | pre-defined parameters of specific models (see note below). | |||
| 11675 | \param f_grid predefined frequency grid [Hz] | |||
| 11676 | \param abs_p predefined pressure grid [Pa] | |||
| 11677 | \param abs_t predefined temperature grid [K] | |||
| 11678 | \param vmr1 N2 volume mixing ratio profile [1] | |||
| 11679 | \param vmr2 O2 volume mixing ratio profile [1] | |||
| 11680 | \param vmr3 H2O volume mixing ratio profile [1] | |||
| 11681 | \remark Borysow, A, and L. Frommhold,<br> | |||
| 11682 | Collision-induced rototranslational absorption spectra of N2-N2 | |||
| 11683 | pairs for temperatures from 50 to 300 K,<br> | |||
| 11684 | The Astrophysical Journal, 311, 1043-1057, 1986. | |||
| 11685 | ||||
| 11686 | \note This absorption model is taken from the FORTRAN77 code of | |||
| 11687 | CKD_MT version 2.50 written by<br> | |||
| 11688 | Atmospheric and Environmental Research Inc. (AER),<br> | |||
| 11689 | Radiation and Climate Group<br> | |||
| 11690 | 131 Hartwell Avenue<br> | |||
| 11691 | Lexington, MA 02421, USA<br> | |||
| 11692 | http://www.rtweb.aer.com/continuum_frame.html | |||
| 11693 | ||||
| 11694 | \author Mayuri Tatiya | |||
| 11695 | \date 2014-27-06 | |||
| 11696 | */ | |||
| 11697 | void CKD_mt_250_CIArot_n2 (MatrixView pxsec, | |||
| 11698 | const Numeric Cin, | |||
| 11699 | const String& model, | |||
| 11700 | ConstVectorView f_grid, | |||
| 11701 | ConstVectorView abs_p, | |||
| 11702 | ConstVectorView abs_t, | |||
| 11703 | ConstVectorView vmr, | |||
| 11704 | ConstVectorView abs_h2o, | |||
| 11705 | ConstVectorView abs_o2, | |||
| 11706 | const Verbosity& verbosity) | |||
| 11707 | { | |||
| 11708 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 11709 | ||||
| 11710 | // check the model name about consistency | |||
| 11711 | if ((model != "user") && (model != "CKDMT252")) | |||
| 11712 | { | |||
| 11713 | ostringstream os; | |||
| 11714 | os << "!!ERROR!!\n" | |||
| 11715 | << "CKD_MT2.50 N2 CIA rotational band:\n" | |||
| 11716 | << "INPUT model name is: " << model << ".\n" | |||
| 11717 | << "VALID model names are user and CKDMT252\n"; | |||
| 11718 | throw runtime_error(os.str()); | |||
| 11719 | } | |||
| 11720 | ||||
| 11721 | ||||
| 11722 | // scaling factor of the N2-N2 CIA rot. band absorption | |||
| 11723 | Numeric ScalingFac = 0.0000e0; | |||
| 11724 | if ( model == "user" ) | |||
| 11725 | { | |||
| 11726 | ScalingFac = Cin; // input scaling factor of calculated absorption | |||
| 11727 | } | |||
| 11728 | else | |||
| 11729 | { | |||
| 11730 | ScalingFac = 1.0000e0; | |||
| 11731 | } | |||
| 11732 | ||||
| 11733 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 11734 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 11735 | ||||
| 11736 | ||||
| 11737 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 11738 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 11738 , "n_p==abs_t.nelem()") : (void)0); | |||
| 11739 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 11739 , "n_p==vmr.nelem()") : (void)0); | |||
| 11740 | ||||
| 11741 | // Check that dimensions of pxsec are consistent with n_f | |||
| 11742 | // and n_p. It should be [n_f,n_p]: | |||
| 11743 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 11743 , "n_f==pxsec.nrows()") : (void)0); | |||
| 11744 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 11744 , "n_p==pxsec.ncols()") : (void)0); | |||
| 11745 | ||||
| 11746 | ||||
| 11747 | // ************************** CKD stuff ************************************ | |||
| 11748 | ||||
| 11749 | // FIXME const Numeric xLosmt = 2.686763e19; // Loschmidt Number [molecules/cm^3] | |||
| 11750 | const Numeric T1 = 273.0e0; | |||
| 11751 | const Numeric TO = 296.0e0; | |||
| 11752 | const Numeric PO = 1013.0e0; | |||
| 11753 | ||||
| 11754 | ||||
| 11755 | // wavenumber range where CKD H2O self continuum is valid | |||
| 11756 | const Numeric VABS_min = -1.000e1; // [cm^-1] | |||
| 11757 | const Numeric VABS_max = 3.500e2; // [cm^-1] | |||
| 11758 | ||||
| 11759 | ||||
| 11760 | // It is assumed here that f_grid is monotonically increasing with index! | |||
| 11761 | // In future change this return into a change of the loop over | |||
| 11762 | // the frequency f_grid. n_f_new < n_f | |||
| 11763 | Numeric V1ABS = f_grid[0] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 11764 | Numeric V2ABS = f_grid[n_f-1] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 11765 | if ( (V1ABS < VABS_min) || (V1ABS > VABS_max) || | |||
| 11766 | (V2ABS < VABS_min) || (V2ABS > VABS_max) ) | |||
| 11767 | { | |||
| 11768 | out3 << "WARNING:\n" | |||
| 11769 | << " CKD_MT 2.50 N2-N2 CIA rotational band:\n" | |||
| 11770 | << " input frequency vector exceeds range of model validity\n" | |||
| 11771 | << " " << N2N2_CT296_ckd_mt_100_v1 << "<->" << N2N2_CT220_ckd_mt_100_v2 << "cm^-1\n"; | |||
| 11772 | } | |||
| 11773 | ||||
| 11774 | ||||
| 11775 | // ------------------- subroutine N2R296/N2R220 ---------------------------- | |||
| 11776 | ||||
| 11777 | if (N2N2_CT296_ckd_mt_100_v1 != N2N2_CT220_ckd_mt_100_v1) | |||
| 11778 | { | |||
| 11779 | ostringstream os; | |||
| 11780 | os << "!!ERROR!!\n" | |||
| 11781 | << "CKD_MT 2.50 N2-N2 CIA rotational band:\n" | |||
| 11782 | << "parameter V1 not the same for different ref. temperatures.\n"; | |||
| 11783 | throw runtime_error(os.str()); | |||
| 11784 | } | |||
| 11785 | if (N2N2_CT296_ckd_mt_100_v2 != N2N2_CT220_ckd_mt_100_v2) | |||
| 11786 | { | |||
| 11787 | ostringstream os; | |||
| 11788 | os << "!!ERROR!!\n" | |||
| 11789 | << "CKD_MT 2.50 N2-N2 CIA rotational band:\n" | |||
| 11790 | << "parameter V2 not the same for different ref. temperatures.\n"; | |||
| 11791 | throw runtime_error(os.str()); | |||
| 11792 | } | |||
| 11793 | if (N2N2_CT296_ckd_mt_100_dv != N2N2_CT220_ckd_mt_100_dv) | |||
| 11794 | { | |||
| 11795 | ostringstream os; | |||
| 11796 | os << "!!ERROR!!\n" | |||
| 11797 | << "CKD_MT 2.50 N2-N2 CIA rotational band:\n" | |||
| 11798 | << "parameter DV not the same for different ref. temperatures.\n"; | |||
| 11799 | throw runtime_error(os.str()); | |||
| 11800 | } | |||
| 11801 | if (N2N2_CT296_ckd_mt_100_npt != N2N2_CT220_ckd_mt_100_npt) | |||
| 11802 | { | |||
| 11803 | ostringstream os; | |||
| 11804 | os << "!!ERROR!!\n" | |||
| 11805 | << "CKD_MT 2.50 N2-N2 CIA rotational band:\n" | |||
| 11806 | << "parameter NPT not the same for different ref. temperatures.\n"; | |||
| 11807 | throw runtime_error(os.str()); | |||
| 11808 | } | |||
| 11809 | ||||
| 11810 | // retrieve the appropriate array sequence of the self continuum | |||
| 11811 | // arrays of the CKD model. | |||
| 11812 | Numeric DVC = N2N2_CT296_ckd_mt_100_dv; | |||
| 11813 | Numeric V1C = V1ABS - DVC; | |||
| 11814 | Numeric V2C = V2ABS + DVC; | |||
| 11815 | ||||
| 11816 | int I1 = (int) ((V1C-N2N2_CT296_ckd_mt_100_v1) / N2N2_CT296_ckd_mt_100_dv); | |||
| 11817 | if (V1C < N2N2_CT296_ckd_mt_100_v1) I1 = -1; | |||
| 11818 | V1C = N2N2_CT296_ckd_mt_100_v1 + (N2N2_CT296_ckd_mt_100_dv * (Numeric)I1); | |||
| 11819 | ||||
| 11820 | int I2 = (int) ((V2C-N2N2_CT296_ckd_mt_100_v1) / N2N2_CT296_ckd_mt_100_dv); | |||
| 11821 | ||||
| 11822 | int NPTC = I2-I1+3; | |||
| 11823 | if (NPTC > N2N2_CT296_ckd_mt_100_npt) NPTC = N2N2_CT296_ckd_mt_100_npt+1; | |||
| 11824 | ||||
| 11825 | V2C = V1C + N2N2_CT296_ckd_mt_100_dv * (Numeric)(NPTC-1); | |||
| 11826 | ||||
| 11827 | if (NPTC < 1) | |||
| 11828 | { | |||
| 11829 | out3 << "WARNING:\n" | |||
| 11830 | << " CKD_MT 2.50 N2-N2 CIA rotational band:\n" | |||
| 11831 | << " no elements of internal continuum coefficients could be found for the\n" | |||
| 11832 | << " input frequency range.\n" | |||
| 11833 | << " Leave the function without calculating the absorption.\n"; | |||
| 11834 | return; | |||
| 11835 | } | |||
| 11836 | ||||
| 11837 | Vector C0(NPTC+addF77fields, 0.); // [cm^3/molecules] | |||
| 11838 | Vector C1(NPTC+addF77fields, 0.); // [cm^3/molecules] | |||
| 11839 | Vector sf_T0(NPTC+addF77fields, 0.); | |||
| 11840 | Vector sf_T1(NPTC+addF77fields, 0.); | |||
| 11841 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 11842 | { | |||
| 11843 | Index I = I1+J; | |||
| 11844 | if ( (I > 0) && (I <= N2N2_CT296_ckd_mt_100_npt) ) | |||
| 11845 | { | |||
| 11846 | C0[J] = N2N2_CT296_ckd_mt_100[I]; // at T=296 K | |||
| 11847 | sf_T0[J] = N2N2_sf_296_ckd_mt_100[I]; | |||
| 11848 | C1[J] = N2N2_CT220_ckd_mt_100[I]; // at T=260 K | |||
| 11849 | sf_T1[J] = N2N2_sf_220_ckd_mt_100[I]; | |||
| 11850 | } | |||
| 11851 | } | |||
| 11852 | ||||
| 11853 | // ------------------- subroutine N2R296/N2R220 ---------------------------- | |||
| 11854 | ||||
| 11855 | ||||
| 11856 | ||||
| 11857 | ||||
| 11858 | // Loop pressure/temperature: | |||
| 11859 | for ( Index i = 0 ; i < n_p ; ++i ) | |||
| 11860 | { | |||
| 11861 | Numeric Tave = abs_t[i]; // [K] | |||
| 11862 | Numeric Pave = (abs_p[i]*1.000e-2); // [hPa] | |||
| 11863 | Numeric vmrn2 = vmr[i]; // [1] | |||
| 11864 | Numeric vmro2 = abs_o2[i]; | |||
| 11865 | Numeric vmrh2o = abs_h2o[i]; | |||
| 11866 | Numeric facfac = vmrn2 * (Pave/PO) * (Pave/PO) * | |||
| 11867 | (T1/Tave) * (T1/Tave); | |||
| 11868 | ||||
| 11869 | Numeric XKT = Tave / 1.4387752; // = (T*k_B) / (h*c) | |||
| 11870 | Numeric Tfac = (Tave - TO) / (220.0e0 - TO); | |||
| 11871 | ||||
| 11872 | // Molecular cross section calculated by CKD. | |||
| 11873 | // The cross sectionis calculated on the predefined | |||
| 11874 | // CKD wavenumber grid. | |||
| 11875 | Vector k(NPTC+addF77fields, 0.); // [1/cm] | |||
| 11876 | Numeric C = 0.000e0; | |||
| 11877 | Numeric sf = 0.000e0; | |||
| 11878 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 11879 | { | |||
| 11880 | Numeric VJ = V1C + (DVC * (Numeric)(J-1)); | |||
| 11881 | Numeric SN2 = 0.000e0; | |||
| 11882 | if ( (C0[J] > 0.000e0) && (C1[J] > 0.000e0) ) | |||
| 11883 | { | |||
| 11884 | C = C0[J] * pow( (C1[J]/C0[J]), Tfac ); | |||
| 11885 | sf = ((sf_T0[J] * pow( (sf_T1[J]/sf_T0[J]), Tfac ))-1.000e0)*(0.79/0.21); | |||
| 11886 | SN2 = facfac * C * (vmrn2 + sf * vmro2 + vmrh2o); | |||
| 11887 | } | |||
| 11888 | // sf is ~ the ratio of alpha(n2-o2)/alpha(n2-n2) | |||
| 11889 | // Eq's 7 and 8 in the Boissoles paper. | |||
| 11890 | // if ( (C0[J] > 0.000e0) && (C1[J] > 0.000e0) ) | |||
| 11891 | // { | |||
| 11892 | // SN2 = facfac* C0[J] * pow( (C1[J]/C0[J]), Tfac ); | |||
| 11893 | // } | |||
| 11894 | ||||
| 11895 | // CKD cross section with radiative field | |||
| 11896 | k[J] = SN2 * RADFN_FUN(VJ,XKT); // [1] | |||
| 11897 | } | |||
| 11898 | ||||
| 11899 | ||||
| 11900 | // Loop input frequency array. The previously calculated cross section | |||
| 11901 | // has therefore to be interpolated on the input frequencies. | |||
| 11902 | for ( Index s = 0 ; s < n_f ; ++s ) | |||
| 11903 | { | |||
| 11904 | // calculate the associated wave number (= 1/wavelength) | |||
| 11905 | Numeric V = f_grid[s] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 11906 | if ( (V > 0.000e0) && (V < N2N2_CT220_ckd_mt_100_v2) ) | |||
| 11907 | { | |||
| 11908 | // arts cross section [1/m] | |||
| 11909 | // interpolate the k vector on the f_grid grid | |||
| 11910 | pxsec(s,i) += ScalingFac * 1.000e2 * XINT_FUN(V1C,V2C,DVC,k,V); | |||
| 11911 | } | |||
| 11912 | } | |||
| 11913 | } | |||
| 11914 | ||||
| 11915 | } | |||
| 11916 | ||||
| 11917 | // ================================================================================= | |||
| 11918 | ||||
| 11919 | //! CKD version MT 2.50 N2-N2 collision induced absorption (fundamental band) | |||
| 11920 | /*! | |||
| 11921 | Model reference: | |||
| 11922 | version_1 of the Nitrogen Collision Induced Fundamental | |||
| 11923 | Lafferty, W.J., A.M. Solodov,A. Weber, W.B. Olson and | |||
| 11924 | J._M. Hartmann, Infrared collision-induced absorption by | |||
| 11925 | N2 near 4.3 microns for atmospheric applications: | |||
| 11926 | Measurements and emprirical modeling, Appl. Optics, 35, | |||
| 11927 | 5911-5917, (1996). | |||
| 11928 | ||||
| 11929 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 11930 | N2-N2 CIA fundamental band according to CKD_MT 1.00 [1/m] | |||
| 11931 | \param Cin strength scaling factor [1] | |||
| 11932 | \param model allows user defined input parameter set | |||
| 11933 | (Cin)<br> | |||
| 11934 | or choice of | |||
| 11935 | pre-defined parameters of specific models (see note below). | |||
| 11936 | \param f_grid predefined frequency grid [Hz] | |||
| 11937 | \param abs_p predefined pressure grid [Pa] | |||
| 11938 | \param abs_t predefined temperature grid [K] | |||
| 11939 | \param vmr N2 volume mixing ratio profile [1] | |||
| 11940 | ||||
| 11941 | \remark Lafferty, W.J., A.M. Solodov,A. Weber, W.B. Olson and | |||
| 11942 | J._M. Hartmann,<br> | |||
| 11943 | Infrared collision-induced absorption by | |||
| 11944 | N2 near 4.3 microns for atmospheric applications: | |||
| 11945 | Measurements and emprirical modeling, <br> | |||
| 11946 | Appl. Optics, 35, 5911-5917, (1996) | |||
| 11947 | ||||
| 11948 | \note This absorption model is taken from the FORTRAN77 code of | |||
| 11949 | CKD_MT version 1.00 written by<br> | |||
| 11950 | Atmospheric and Environmental Research Inc. (AER),<br> | |||
| 11951 | Radiation and Climate Group<br> | |||
| 11952 | 131 Hartwell Avenue<br> | |||
| 11953 | Lexington, MA 02421, USA<br> | |||
| 11954 | http://www.rtweb.aer.com/continuum_frame.html | |||
| 11955 | ||||
| 11956 | ||||
| 11957 | \author Mayuri Tatiya | |||
| 11958 | \date 2014-27-06 | |||
| 11959 | */ | |||
| 11960 | void CKD_mt_250_CIAfun_n2 (MatrixView pxsec, | |||
| 11961 | const Numeric Cin, | |||
| 11962 | const String& model, | |||
| 11963 | ConstVectorView f_grid, | |||
| 11964 | ConstVectorView abs_p, | |||
| 11965 | ConstVectorView abs_t, | |||
| 11966 | ConstVectorView vmr, | |||
| 11967 | ConstVectorView abs_h2o, | |||
| 11968 | ConstVectorView abs_o2, | |||
| 11969 | const Verbosity& verbosity) | |||
| 11970 | { | |||
| 11971 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 11972 | ||||
| 11973 | // check the model name about consistency | |||
| 11974 | if ((model != "user") && (model != "CKDMT252")) | |||
| 11975 | { | |||
| 11976 | ostringstream os; | |||
| 11977 | os << "!!ERROR!!\n" | |||
| 11978 | << "CKD_MT2.50 N2 CIA fundamental band:\n" | |||
| 11979 | << "INPUT model name is: " << model << ".\n" | |||
| 11980 | << "VALID model names are user and CKDMT252\n"; | |||
| 11981 | throw runtime_error(os.str()); | |||
| 11982 | } | |||
| 11983 | ||||
| 11984 | ||||
| 11985 | // scaling factor of the N2-N2 CIA fundamental band absorption | |||
| 11986 | Numeric ScalingFac = 1.0000e0; | |||
| 11987 | if ( model == "user" ) | |||
| 11988 | { | |||
| 11989 | ScalingFac = Cin; // input scaling factor of calculated absorption | |||
| 11990 | } | |||
| 11991 | ||||
| 11992 | ||||
| 11993 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 11994 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 11995 | ||||
| 11996 | ||||
| 11997 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 11998 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 11998 , "n_p==abs_t.nelem()") : (void)0); | |||
| 11999 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 11999 , "n_p==vmr.nelem()") : (void)0); | |||
| 12000 | ||||
| 12001 | // Check that dimensions of pxsec are consistent with n_f | |||
| 12002 | // and n_p. It should be [n_f,n_p]: | |||
| 12003 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 12003 , "n_f==pxsec.nrows()") : (void)0); | |||
| 12004 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 12004 , "n_p==pxsec.ncols()") : (void)0); | |||
| 12005 | ||||
| 12006 | ||||
| 12007 | // ************************** CKD stuff ************************************ | |||
| 12008 | ||||
| 12009 | const Numeric xLosmt = 2.686763e19; // Loschmidt Number [molecules/cm^3] | |||
| 12010 | const Numeric T1 = 273.0e0; | |||
| 12011 | // const Numeric TO = 296.0e0; | |||
| 12012 | const Numeric PO = 1013.0e0; | |||
| 12013 | ||||
| 12014 | // It is assumed here that f_grid is monotonically increasing with index! | |||
| 12015 | // In future change this return into a change of the loop over | |||
| 12016 | // the frequency f_grid. n_f_new < n_f | |||
| 12017 | Numeric V1ABS = f_grid[0] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 12018 | Numeric V2ABS = f_grid[n_f-1] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 12019 | if ( (V1ABS < N2N2_N2F_ckd_mt_250_v1) || (V1ABS > N2N2_N2F_ckd_mt_250_v2) || | |||
| 12020 | (V2ABS < N2N2_N2F_ckd_mt_250_v1) || (V2ABS > N2N2_N2F_ckd_mt_250_v2) ) | |||
| 12021 | { | |||
| 12022 | out3 << "WARNING:\n" | |||
| 12023 | << " CKD_MT 2.50 N2-N2 CIA fundamental band:\n" | |||
| 12024 | << " input frequency vector exceeds range of model validity\n" | |||
| 12025 | << " " << N2N2_N2F_ckd_mt_250_v1 << "<->" << N2N2_N2F_ckd_mt_250_v2 << "cm^-1\n"; | |||
| 12026 | } | |||
| 12027 | ||||
| 12028 | ||||
| 12029 | // ------------------- subroutine N2_VER_1 ---------------------------- | |||
| 12030 | ||||
| 12031 | // retrieve the appropriate array sequence of the self continuum | |||
| 12032 | // arrays of the CKD model. | |||
| 12033 | Numeric DVC = N2N2_N2F_ckd_mt_250_dv; | |||
| 12034 | Numeric V1C = V1ABS - DVC; | |||
| 12035 | Numeric V2C = V2ABS + DVC; | |||
| 12036 | ||||
| 12037 | int I1 = (int) ((V1C-N2N2_N2F_ckd_mt_250_v1) / N2N2_N2F_ckd_mt_250_dv); | |||
| 12038 | if (V1C < N2N2_N2F_ckd_mt_250_v1) I1 = -1; | |||
| 12039 | V1C = N2N2_N2F_ckd_mt_250_v1 + (N2N2_N2F_ckd_mt_250_dv * (Numeric)I1); | |||
| 12040 | ||||
| 12041 | int I2 = (int) ((V2C-N2N2_N2F_ckd_mt_250_v1) / N2N2_N2F_ckd_mt_250_dv); | |||
| 12042 | ||||
| 12043 | int NPTC = I2-I1+3; | |||
| 12044 | if (NPTC > N2N2_N2F_ckd_mt_250_npt) NPTC = N2N2_N2F_ckd_mt_250_npt+1; | |||
| 12045 | ||||
| 12046 | V2C = V1C + N2N2_N2F_ckd_mt_250_dv * (Numeric)(NPTC-1); | |||
| 12047 | ||||
| 12048 | if (NPTC < 1) | |||
| 12049 | { | |||
| 12050 | out3 << "WARNING:\n" | |||
| 12051 | << " CKD_MT 2.50 N2-N2 CIA fundamental band:\n" | |||
| 12052 | << " no elements of internal continuum coefficients could be found for the\n" | |||
| 12053 | << " input frequency range.\n"; | |||
| 12054 | return; | |||
| 12055 | } | |||
| 12056 | ||||
| 12057 | Vector xn2(NPTC+addF77fields, 0.); | |||
| 12058 | Vector xn2t(NPTC+addF77fields, 0.); | |||
| 12059 | ||||
| 12060 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 12061 | { | |||
| 12062 | Index I = I1+J; | |||
| 12063 | if ( (I > 0) && (I <= N2N2_N2F_ckd_mt_250_npt) ) | |||
| 12064 | { | |||
| 12065 | xn2[J] = N2N2_N2F_ckd_mt_250[I]; | |||
| 12066 | xn2t[J] = N2N2_N2Ft_ckd_mt_250[I]; | |||
| 12067 | } | |||
| 12068 | } | |||
| 12069 | ||||
| 12070 | // ------------------- subroutine N2_VER_1 ---------------------------- | |||
| 12071 | ||||
| 12072 | ||||
| 12073 | ||||
| 12074 | ||||
| 12075 | // Loop pressure/temperature: | |||
| 12076 | for ( Index i = 0 ; i < n_p ; ++i ) | |||
| 12077 | { | |||
| 12078 | Numeric Tave = abs_t[i]; // [K] | |||
| 12079 | Numeric Pave = (abs_p[i]*1.000e-2); // [hPa] | |||
| 12080 | Numeric vmrn2 = vmr[i]; // [1] | |||
| 12081 | Numeric vmro2 = abs_o2[i]; // [1] | |||
| 12082 | Numeric vmrh2o = abs_h2o[i]; // [1] | |||
| 12083 | Numeric WTOT = xLosmt * (Pave/PO) * (T1/Tave); // [molecules/cm^2] | |||
| 12084 | Numeric tau_fac= WTOT * (Pave/PO) * (T1/Tave); | |||
| 12085 | Numeric a_o2 = 1.294 - 0.4545*Tave/296.00e0; | |||
| 12086 | Numeric a_h2o = 1.00e0; | |||
| 12087 | Numeric XKT = Tave / 1.4387752e0; // = (T*k_B) / (h*c) | |||
| 12088 | ||||
| 12089 | // FIXME Numeric Tfac = (Tave - TO) / (220.0e0 - TO); // [1] | |||
| 12090 | Numeric xktfac = ((1.000e0/Tave)-(1.000e0/272))/((1.000e0/228)-(1.000e0/272)); // [1/K] | |||
| 12091 | Numeric xt_lin = (Tave-272)/(228-272); // [K] | |||
| 12092 | Numeric factor = 0.000e0; | |||
| 12093 | if (vmrn2 > VMRCalcLimit) | |||
| 12094 | { | |||
| 12095 | factor = (1.000e0 / xLosmt) * (vmrn2+a_o2*vmro2+a_h2o*vmrh2o); | |||
| 12096 | } | |||
| 12097 | ||||
| 12098 | // Molecular cross section calculated by CKD. | |||
| 12099 | // The cross sectionis calculated on the predefined | |||
| 12100 | // CKD wavenumber grid. | |||
| 12101 | Vector k(NPTC+addF77fields+1, 0.); // [1/cm] | |||
| 12102 | Vector C0(NPTC+addF77fields+1, 0.); | |||
| 12103 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 12104 | { | |||
| 12105 | Numeric VJ = V1C + (DVC * (Numeric)(J-1)); | |||
| 12106 | Numeric SN2 = 0.000e0; | |||
| 12107 | if ( (xn2[J] > 0.000e0) && (xn2t[J] > 0.000e0)) | |||
| 12108 | { | |||
| 12109 | C0[J] = factor * xn2[J] * pow((xn2t[J]/xn2[J]), xktfac) / VJ; | |||
| 12110 | SN2 = tau_fac * C0[J]; | |||
| 12111 | } | |||
| 12112 | else | |||
| 12113 | { | |||
| 12114 | C0[J] = factor * (xn2[J] + (xn2t[J]-xn2[J])*xt_lin) / VJ; | |||
| 12115 | SN2 = tau_fac * C0[J]; | |||
| 12116 | } | |||
| 12117 | // CKD cross section with radiative field | |||
| 12118 | k[J] = SN2 * RADFN_FUN(VJ,XKT); // [1/cm] | |||
| 12119 | } | |||
| 12120 | ||||
| 12121 | ||||
| 12122 | // Loop input frequency array. The previously calculated cross section | |||
| 12123 | // has therefore to be interpolated on the input frequencies. | |||
| 12124 | for ( Index s = 0 ; s < n_f ; ++s ) | |||
| 12125 | { | |||
| 12126 | // calculate the associated wave number (= 1/wavelength) | |||
| 12127 | Numeric V = f_grid[s] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 12128 | if ( (V > N2N2_N2F_ckd_mt_250_v1) && (V < N2N2_N2F_ckd_mt_250_v2) ) | |||
| 12129 | { | |||
| 12130 | // arts cross section [1/m] | |||
| 12131 | // interpolate the k vector on the f_grid grid | |||
| 12132 | pxsec(s,i) += ScalingFac * 1.000e2 * XINT_FUN(V1C,V2C,DVC,k,V); | |||
| 12133 | } | |||
| 12134 | } | |||
| 12135 | } | |||
| 12136 | ||||
| 12137 | } | |||
| 12138 | // ================================================================================= | |||
| 12139 | ||||
| 12140 | //! CKD version MT 1.00 O2-O2 collision induced absorption (fundamental band) | |||
| 12141 | /*! | |||
| 12142 | Model reference: | |||
| 12143 | F. Thibault, V. Menoux, R. Le Doucen, L. Rosenman, | |||
| 12144 | J.-M. Hartmann, Ch. Boulet, | |||
| 12145 | "Infrared collision-induced absorption by O2 near 6.4 microns for | |||
| 12146 | atmospheric applications: measurements and emprirical modeling", | |||
| 12147 | Appl. Optics, 35, 5911-5917, (1996). | |||
| 12148 | ||||
| 12149 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 12150 | O2-O2 CIA fundamental band according to CKD_MT 1.00 [1/m] | |||
| 12151 | \param Cin strength scaling factor [1] | |||
| 12152 | \param model allows user defined input parameter set | |||
| 12153 | (Cin)<br> | |||
| 12154 | or choice of | |||
| 12155 | pre-defined parameters of specific models (see note below). | |||
| 12156 | \param f_grid predefined frequency grid [Hz] | |||
| 12157 | \param abs_p predefined pressure grid [Pa] | |||
| 12158 | \param abs_t predefined temperature grid [K] | |||
| 12159 | \param vmr O2 volume mixing ratio profile [1] | |||
| 12160 | ||||
| 12161 | \remark F. Thibault, V. Menoux, R. Le Doucen, L. Rosenman, | |||
| 12162 | J.-M. Hartmann, Ch. Boulet,<br> | |||
| 12163 | Infrared collision-induced absorption by O2 near 6.4 microns for | |||
| 12164 | atmospheric applications: measurements and emprirical modeling,<br> | |||
| 12165 | Appl. Optics, 35, 5911-5917, (1996). | |||
| 12166 | ||||
| 12167 | \note This absorption model is taken from the FORTRAN77 code of | |||
| 12168 | CKD_MT version 1.00 written by<br> | |||
| 12169 | Atmospheric and Environmental Research Inc. (AER),<br> | |||
| 12170 | Radiation and Climate Group<br> | |||
| 12171 | 131 Hartwell Avenue<br> | |||
| 12172 | Lexington, MA 02421, USA<br> | |||
| 12173 | http://www.rtweb.aer.com/continuum_frame.html | |||
| 12174 | ||||
| 12175 | \author Thomas Kuhn | |||
| 12176 | \date 2002-28-08 | |||
| 12177 | */ | |||
| 12178 | void CKD_mt_CIAfun_o2 (MatrixView pxsec, | |||
| 12179 | const Numeric Cin, | |||
| 12180 | const String& model, | |||
| 12181 | ConstVectorView f_grid, | |||
| 12182 | ConstVectorView abs_p, | |||
| 12183 | ConstVectorView abs_t, | |||
| 12184 | ConstVectorView vmr _U___attribute((unused)), | |||
| 12185 | const Verbosity& verbosity) | |||
| 12186 | { | |||
| 12187 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 12188 | ||||
| 12189 | // check the model name about consistency | |||
| 12190 | if ((model != "user") && (model != "CKDMT100")) | |||
| 12191 | { | |||
| 12192 | ostringstream os; | |||
| 12193 | os << "!!ERROR!!\n" | |||
| 12194 | << "CKD_MT1.00 O2 CIA fundamental band:\n" | |||
| 12195 | << "INPUT model name is: " << model << ".\n" | |||
| 12196 | << "VALID model names are user and CKDMT100\n"; | |||
| 12197 | throw runtime_error(os.str()); | |||
| 12198 | } | |||
| 12199 | ||||
| 12200 | ||||
| 12201 | // scaling factor of the O2-O2 CIA fundamental band absorption | |||
| 12202 | Numeric ScalingFac = 1.0000e0; | |||
| 12203 | if ( model == "user" ) | |||
| 12204 | { | |||
| 12205 | ScalingFac = Cin; // input scaling factor of calculated absorption | |||
| 12206 | } | |||
| 12207 | ||||
| 12208 | ||||
| 12209 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 12210 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 12211 | ||||
| 12212 | ||||
| 12213 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 12214 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 12214 , "n_p==abs_t.nelem()") : (void)0); | |||
| 12215 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 12215 , "n_p==vmr.nelem()") : (void)0); | |||
| 12216 | ||||
| 12217 | // Check that dimensions of pxsec are consistent with n_f | |||
| 12218 | // and n_p. It should be [n_f,n_p]: | |||
| 12219 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 12219 , "n_f==pxsec.nrows()") : (void)0); | |||
| 12220 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 12220 , "n_p==pxsec.ncols()") : (void)0); | |||
| 12221 | ||||
| 12222 | ||||
| 12223 | // ************************** CKD stuff ************************************ | |||
| 12224 | ||||
| 12225 | const Numeric xLosmt = 2.686763e19; // Loschmidt Number [molecules/cm^3] | |||
| 12226 | const Numeric T1 = 273.0e0; | |||
| 12227 | const Numeric TO = 296.0e0; | |||
| 12228 | const Numeric PO = 1013.0e0; | |||
| 12229 | ||||
| 12230 | ||||
| 12231 | // It is assumed here that f_grid is monotonically increasing with index! | |||
| 12232 | // In future change this return into a change of the loop over | |||
| 12233 | // the frequency f_grid. n_f_new < n_f | |||
| 12234 | Numeric V1ABS = f_grid[0] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 12235 | Numeric V2ABS = f_grid[n_f-1] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 12236 | if ( (V1ABS < O2O2_O2F_ckd_mt_100_v1) || (V1ABS > O2O2_O2F_ckd_mt_100_v2) || | |||
| 12237 | (V2ABS < O2O2_O2F_ckd_mt_100_v1) || (V2ABS > O2O2_O2F_ckd_mt_100_v2) ) | |||
| 12238 | { | |||
| 12239 | out3 << "WARNING:\n" | |||
| 12240 | << " CKD_MT 1.00 O2-O2 CIA fundamental band:\n" | |||
| 12241 | << " input frequency vector exceeds range of model validity\n" | |||
| 12242 | << " " << O2O2_O2F_ckd_mt_100_v1 << "<->" << O2O2_O2F_ckd_mt_100_v2 << "cm^-1\n"; | |||
| 12243 | } | |||
| 12244 | ||||
| 12245 | ||||
| 12246 | // ------------------- subroutine O2_VER_1 ---------------------------- | |||
| 12247 | ||||
| 12248 | // retrieve the appropriate array sequence of the CKD model array. | |||
| 12249 | Numeric DVC = O2O2_O2F_ckd_mt_100_dv; | |||
| 12250 | Numeric V1C = V1ABS - DVC; | |||
| 12251 | Numeric V2C = V2ABS + DVC; | |||
| 12252 | ||||
| 12253 | int I1 = (int) ((V1C-O2O2_O2F_ckd_mt_100_v1) / O2O2_O2F_ckd_mt_100_dv); | |||
| 12254 | if (V1C < O2O2_O2F_ckd_mt_100_v1) I1 = -1; | |||
| 12255 | V1C = O2O2_O2F_ckd_mt_100_v1 + (O2O2_O2F_ckd_mt_100_dv * (Numeric)I1); | |||
| 12256 | ||||
| 12257 | int I2 = (int) ((V2C-O2O2_O2F_ckd_mt_100_v1) / O2O2_O2F_ckd_mt_100_dv); | |||
| 12258 | ||||
| 12259 | int NPTC = I2-I1+3; | |||
| 12260 | if (NPTC > O2O2_O2F_ckd_mt_100_npt) NPTC = O2O2_O2F_ckd_mt_100_npt+1; | |||
| 12261 | ||||
| 12262 | V2C = V1C + O2O2_O2F_ckd_mt_100_dv * (Numeric)(NPTC-1); | |||
| 12263 | ||||
| 12264 | if (NPTC < 1) | |||
| 12265 | { | |||
| 12266 | out3 << "WARNING:\n" | |||
| 12267 | << " CKD_MT 1.00 O2 CIA fundamental band:\n" | |||
| 12268 | << " no elements of internal continuum coefficients could be found for the\n" | |||
| 12269 | << " input frequency range.\n" | |||
| 12270 | << " Leave the function without calculating the absorption.\n"; | |||
| 12271 | return; | |||
| 12272 | } | |||
| 12273 | ||||
| 12274 | Vector xo2(NPTC+addF77fields, 0.); | |||
| 12275 | Vector xo2t(NPTC+addF77fields, 0.); | |||
| 12276 | ||||
| 12277 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 12278 | { | |||
| 12279 | Index I = I1+J; | |||
| 12280 | if ( (I > 0) && (I <= O2O2_O2F_ckd_mt_100_npt) ) | |||
| 12281 | { | |||
| 12282 | xo2[J] = O2O2_O2Fo_ckd_mt_100[I]; | |||
| 12283 | xo2t[J] = O2O2_O2Ft_ckd_mt_100[I]; | |||
| 12284 | } | |||
| 12285 | } | |||
| 12286 | ||||
| 12287 | // ------------------- subroutine O2_VER_1 ---------------------------- | |||
| 12288 | ||||
| 12289 | ||||
| 12290 | ||||
| 12291 | ||||
| 12292 | // Loop pressure/temperature: | |||
| 12293 | for ( Index i = 0 ; i < n_p ; ++i ) | |||
| 12294 | { | |||
| 12295 | Numeric Tave = abs_t[i]; // [K] | |||
| 12296 | Numeric Pave = (abs_p[i]*1.000e-2); // [hPa] | |||
| 12297 | // FIXME Numeric vmro2 = vmr[i]; // [1] | |||
| 12298 | Numeric WTOT = xLosmt * (Pave/PO) * (T1/Tave); // [molecules/cm^2] | |||
| 12299 | Numeric tau_fac= WTOT * (Pave/PO) * (T1/Tave); | |||
| 12300 | ||||
| 12301 | Numeric XKT = Tave / 1.4387752; // = (T*k_B) / (h*c) | |||
| 12302 | ||||
| 12303 | Numeric xktfac = (1.000e0/TO) - (1.000e0/Tave); // [1/K] | |||
| 12304 | Numeric factor = (1.000e0 / xLosmt); | |||
| 12305 | ||||
| 12306 | // Molecular cross section calculated by CKD. | |||
| 12307 | // The cross sectionis calculated on the predefined | |||
| 12308 | // CKD wavenumber grid. | |||
| 12309 | Vector k(NPTC+addF77fields+1, 0.); // [1/cm] | |||
| 12310 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 12311 | { | |||
| 12312 | Numeric VJ = V1C + (DVC * (Numeric)(J-1)); | |||
| 12313 | Numeric SO2 = 0.0e0; | |||
| 12314 | if (xo2[J] > 0.0e0) | |||
| 12315 | { | |||
| 12316 | Numeric C0 = factor * xo2[J] * exp(xo2t[J]*xktfac) / VJ; | |||
| 12317 | SO2 = tau_fac * C0; | |||
| 12318 | } | |||
| 12319 | ||||
| 12320 | // CKD cross section without radiative field | |||
| 12321 | k[J] = SO2 * RADFN_FUN(VJ,XKT); // [1] | |||
| 12322 | } | |||
| 12323 | ||||
| 12324 | ||||
| 12325 | // Loop input frequency array. The previously calculated cross section | |||
| 12326 | // has therefore to be interpolated on the input frequencies. | |||
| 12327 | for ( Index s = 0 ; s < n_f ; ++s ) | |||
| 12328 | { | |||
| 12329 | // calculate the associated wave number (= 1/wavelength) | |||
| 12330 | Numeric V = f_grid[s] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 12331 | if ( (V > O2O2_O2F_ckd_mt_100_v1) && (V < O2O2_O2F_ckd_mt_100_v2) ) | |||
| 12332 | { | |||
| 12333 | // arts cross section [1/m] | |||
| 12334 | // interpolate the k vector on the f_grid grid | |||
| 12335 | pxsec(s,i) += ScalingFac * 1.000e2 * XINT_FUN(V1C,V2C,DVC,k,V); | |||
| 12336 | } | |||
| 12337 | } | |||
| 12338 | } | |||
| 12339 | ||||
| 12340 | } | |||
| 12341 | ||||
| 12342 | // ================================================================================= | |||
| 12343 | ||||
| 12344 | //! CKD version MT 1.00 O2 v0<-v0 band absorption | |||
| 12345 | /*! | |||
| 12346 | Model reference: | |||
| 12347 | CKD_MT 1.00 implementation of oxygen collision induced fundamental model of | |||
| 12348 | O2 continuum formulated by | |||
| 12349 | Mate et al. over the spectral region 7550-8486 cm-1: | |||
| 12350 | B. Mate, C. Lugez, G.T. Fraser, W.J. Lafferty, | |||
| 12351 | "Absolute Intensities for the O2 1.27 micron | |||
| 12352 | continuum absorption", | |||
| 12353 | J. Geophys. Res., 104, 30,585-30,590, 1999. | |||
| 12354 | ||||
| 12355 | The units of these continua coefficients are 1 / (amagat_O2*amagat_air) | |||
| 12356 | ||||
| 12357 | Also, refer to the paper "Observed Atmospheric | |||
| 12358 | Collision Induced Absorption in Near Infrared Oxygen Bands", | |||
| 12359 | Mlawer, Clough, Brown, Stephen, Landry, Goldman, & Murcray, | |||
| 12360 | Journal of Geophysical Research (1997). | |||
| 12361 | ||||
| 12362 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 12363 | O2 v0<-v0 band according to CKD_MT 1.00 [1/m] | |||
| 12364 | \param Cin strength scaling factor [1] | |||
| 12365 | \param model allows user defined input parameter set | |||
| 12366 | (Cin)<br> | |||
| 12367 | or choice of | |||
| 12368 | pre-defined parameters of specific models (see note below). | |||
| 12369 | \param f_grid predefined frequency grid [Hz] | |||
| 12370 | \param abs_p predefined pressure grid [Pa] | |||
| 12371 | \param abs_t predefined temperature grid [K] | |||
| 12372 | \param vmr O2 volume mixing ratio profile [1] | |||
| 12373 | \param abs_n2 N2 volume mixing ratio profile [1] | |||
| 12374 | ||||
| 12375 | \remark B. Mate, C. Lugez, G.T. Fraser, W.J. Lafferty,<br> | |||
| 12376 | Absolute Intensities for the O2 1.27 micron continuum absorption,<br> | |||
| 12377 | J. Geophys. Res., 104, 30,585-30,590, 1999. | |||
| 12378 | ||||
| 12379 | \note This absorption model is taken from the FORTRAN77 code of | |||
| 12380 | CKD_MT version 1.00 written by<br> | |||
| 12381 | Atmospheric and Environmental Research Inc. (AER),<br> | |||
| 12382 | Radiation and Climate Group<br> | |||
| 12383 | 131 Hartwell Avenue<br> | |||
| 12384 | Lexington, MA 02421, USA<br> | |||
| 12385 | http://www.rtweb.aer.com/continuum_frame.html<br> | |||
| 12386 | <br> | |||
| 12387 | Oxygen band absorption model for the \f$a^1\Delta_g\f$ | |||
| 12388 | \htmlonly←\endhtmlonly \latexonly$\leftarrow$\endlatexonly | |||
| 12389 | \f$X^3\Sigma^-_g\f$ band system considering the | |||
| 12390 | \f$\nu=0\f$ | |||
| 12391 | \htmlonly←\endhtmlonly \latexonly$\leftarrow$\endlatexonly | |||
| 12392 | \f$\nu=0\f$ | |||
| 12393 | transitions. | |||
| 12394 | ||||
| 12395 | \author Thomas Kuhn | |||
| 12396 | \date 2002-28-08 | |||
| 12397 | */ | |||
| 12398 | void CKD_mt_v0v0_o2 (MatrixView pxsec, | |||
| 12399 | const Numeric Cin, | |||
| 12400 | const String& model, | |||
| 12401 | ConstVectorView f_grid, | |||
| 12402 | ConstVectorView abs_p, | |||
| 12403 | ConstVectorView abs_t, | |||
| 12404 | ConstVectorView vmr, | |||
| 12405 | ConstVectorView abs_n2, | |||
| 12406 | const Verbosity& verbosity) | |||
| 12407 | { | |||
| 12408 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 12409 | ||||
| 12410 | // check the model name about consistency | |||
| 12411 | if ((model != "user") && (model != "CKDMT100")) | |||
| 12412 | { | |||
| 12413 | ostringstream os; | |||
| 12414 | os << "!!ERROR!!\n" | |||
| 12415 | << "CKD_MT1.00 O2 band at 1.27 micrometer:\n" | |||
| 12416 | << "INPUT model name is: " << model << ".\n" | |||
| 12417 | << "VALID model names are user and CKDMT100\n"; | |||
| 12418 | throw runtime_error(os.str()); | |||
| 12419 | } | |||
| 12420 | ||||
| 12421 | ||||
| 12422 | // scaling factor of the O2 v0<-v0 band absorption | |||
| 12423 | Numeric ScalingFac = 1.0000e0; | |||
| 12424 | if ( model == "user" ) | |||
| 12425 | { | |||
| 12426 | ScalingFac = Cin; // input scaling factor of calculated absorption | |||
| 12427 | }; | |||
| 12428 | ||||
| 12429 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 12430 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 12431 | ||||
| 12432 | ||||
| 12433 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 12434 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 12434 , "n_p==abs_t.nelem()") : (void)0); | |||
| 12435 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 12435 , "n_p==vmr.nelem()") : (void)0); | |||
| 12436 | ||||
| 12437 | // Check that dimensions of pxsec are consistent with n_f | |||
| 12438 | // and n_p. It should be [n_f,n_p]: | |||
| 12439 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 12439 , "n_f==pxsec.nrows()") : (void)0); | |||
| 12440 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 12440 , "n_p==pxsec.ncols()") : (void)0); | |||
| 12441 | ||||
| 12442 | ||||
| 12443 | // ************************** CKD stuff ************************************ | |||
| 12444 | ||||
| 12445 | // FIXME const Numeric xLosmt = 2.686763e19; // Loschmidt Number [molecules/cm^3] | |||
| 12446 | const Numeric T1 = 273.0e0; | |||
| 12447 | // FIXME const Numeric TO = 296.0e0; | |||
| 12448 | const Numeric PO = 1013.0e0; | |||
| 12449 | ||||
| 12450 | // It is assumed here that f_grid is monotonically increasing with index! | |||
| 12451 | // In future change this return into a change of the loop over | |||
| 12452 | // the frequency f_grid. n_f_new < n_f | |||
| 12453 | Numeric V1ABS = f_grid[0] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 12454 | Numeric V2ABS = f_grid[n_f-1] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 12455 | if ( (V1ABS < O2_00_ckd_mt_100_v1) || (V1ABS > O2_00_ckd_mt_100_v2) || | |||
| 12456 | (V2ABS < O2_00_ckd_mt_100_v1) || (V2ABS > O2_00_ckd_mt_100_v2) ) | |||
| 12457 | { | |||
| 12458 | out3 << "WARNING:\n" | |||
| 12459 | << " CKD_MT 1.00 O2 v0<-v0 band:\n" | |||
| 12460 | << " input frequency vector exceeds range of model validity\n" | |||
| 12461 | << " " << O2_00_ckd_mt_100_v1 << "<->" << O2_00_ckd_mt_100_v2 << "cm^-1\n"; | |||
| 12462 | } | |||
| 12463 | ||||
| 12464 | ||||
| 12465 | // ------------------- subroutine O2INF1 ---------------------------- | |||
| 12466 | ||||
| 12467 | // retrieve the appropriate array sequence of the CKD model array. | |||
| 12468 | Numeric DVC = O2_00_ckd_mt_100_dv; | |||
| 12469 | Numeric V1C = V1ABS - DVC; | |||
| 12470 | Numeric V2C = V2ABS + DVC; | |||
| 12471 | ||||
| 12472 | int I1 = (int) ((V1C-O2_00_ckd_mt_100_v1) / O2_00_ckd_mt_100_dv); | |||
| 12473 | if (V1C < O2_00_ckd_mt_100_v1) I1 = I1-1; | |||
| 12474 | V1C = O2_00_ckd_mt_100_v1 + (O2_00_ckd_mt_100_dv * (Numeric)I1); | |||
| 12475 | ||||
| 12476 | int I2 = (int) ((V2C-O2_00_ckd_mt_100_v1) / O2_00_ckd_mt_100_dv); | |||
| 12477 | ||||
| 12478 | int NPTC = I2-I1+3; | |||
| 12479 | ||||
| 12480 | V2C = V1C + O2_00_ckd_mt_100_dv * (Numeric)(NPTC-1); | |||
| 12481 | ||||
| 12482 | if (NPTC < 1) | |||
| 12483 | { | |||
| 12484 | out3 << "WARNING:\n" | |||
| 12485 | << " CKD_MT 1.00 O2 v0<-v0 band:\n" | |||
| 12486 | << " no elements of internal continuum coefficients could be found for the\n" | |||
| 12487 | << " input frequency range.\n" | |||
| 12488 | << " Leave the function without calculating the absorption.\n"; | |||
| 12489 | return; | |||
| 12490 | } | |||
| 12491 | ||||
| 12492 | Numeric CO[(int)(NPTC+addF77fields)]; | |||
| 12493 | ||||
| 12494 | ||||
| 12495 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 12496 | { | |||
| 12497 | CO[J] = 0.000e0; | |||
| 12498 | Index I = I1+J; | |||
| 12499 | if ( (I > 0) && (I <= O2_00_ckd_mt_100_npt) ) | |||
| 12500 | { | |||
| 12501 | Numeric VJ = V1C + (DVC * (Numeric)(J-1)); | |||
| 12502 | CO[J] = O2_00_ckd_mt_100[I] / VJ; | |||
| 12503 | } | |||
| 12504 | } | |||
| 12505 | ||||
| 12506 | // ------------------- subroutine O2INF1 ---------------------------- | |||
| 12507 | ||||
| 12508 | ||||
| 12509 | ||||
| 12510 | ||||
| 12511 | // Loop pressure/temperature: | |||
| 12512 | for ( Index i = 0 ; i < n_p ; ++i ) | |||
| 12513 | { | |||
| 12514 | Numeric Tave = abs_t[i]; // [K] | |||
| 12515 | Numeric Pave = (abs_p[i]*1.000e-2); // [hPa] | |||
| 12516 | Numeric vmro2 = vmr[i]; // [1] | |||
| 12517 | Numeric vmrn2 = abs_n2[i]; // [1] | |||
| 12518 | Numeric ADJWO2 = (vmro2 + 0.300e0*vmrn2) / 0.446e0 * | |||
| 12519 | (Pave/PO) * (Pave/PO) * (T1/Tave) * (T1/Tave); | |||
| 12520 | Numeric XKT = Tave / 1.4387752e0; // = (T*k_B) / (h*c) | |||
| 12521 | ||||
| 12522 | // Molecular cross section calculated by CKD. | |||
| 12523 | // The cross sectionis calculated on the predefined | |||
| 12524 | // CKD wavenumber grid. The abs. coeff. is then the | |||
| 12525 | // cross section times the number density. | |||
| 12526 | Numeric k[NPTC+addF77fields]; // [1/cm] | |||
| 12527 | k[0] = 0.00e0; // not used array field | |||
| 12528 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 12529 | { | |||
| 12530 | Numeric VJ = V1C + (DVC * (Numeric)(J-1)); | |||
| 12531 | Numeric SO2 = 0.0e0; | |||
| 12532 | if (CO[J] > 0.0e0) | |||
| 12533 | { | |||
| 12534 | SO2 = ADJWO2 * CO[J]; | |||
| 12535 | } | |||
| 12536 | ||||
| 12537 | // CKD (cross section * number density) with radiative field | |||
| 12538 | k[J] = SO2 * RADFN_FUN(VJ,XKT); // [1/cm] | |||
| 12539 | } | |||
| 12540 | ||||
| 12541 | ||||
| 12542 | // Loop input frequency array. The previously calculated cross section | |||
| 12543 | // has therefore to be interpolated on the input frequencies. | |||
| 12544 | for ( Index s = 0 ; s < n_f ; ++s ) | |||
| 12545 | { | |||
| 12546 | // calculate the associated wave number (= 1/wavelength) | |||
| 12547 | Numeric V = f_grid[s] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 12548 | if ( (V > O2_00_ckd_mt_100_v1) && (V < O2_00_ckd_mt_100_v2) ) | |||
| 12549 | { | |||
| 12550 | // arts cross section [1/m] | |||
| 12551 | // interpolate the k vector on the f_grid grid | |||
| 12552 | pxsec(s,i) += ScalingFac * 1.000e2 * XINT_FUN(V1C,V2C,DVC,k, | |||
| 12553 | NPTC+addF77fields,V); | |||
| 12554 | } | |||
| 12555 | } | |||
| 12556 | } | |||
| 12557 | ||||
| 12558 | } | |||
| 12559 | ||||
| 12560 | // ================================================================================= | |||
| 12561 | ||||
| 12562 | //! CKD version MT 1.00 O2 v1<-v0 band absorption | |||
| 12563 | /*! | |||
| 12564 | Model reference: | |||
| 12565 | CKD_MT 1.00 implementation of oxygen v1<-v0 band model of | |||
| 12566 | Mlawer, Clough, Brown, Stephen, Landry, Goldman, Murcray, | |||
| 12567 | "Observed Atmospheric Collision Induced Absorption in Near Infrared Oxygen Bands", | |||
| 12568 | Journal of Geophysical Research, vol 103, no. D4, pp. 3859-3863, 1998. | |||
| 12569 | ||||
| 12570 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 12571 | O2 v1<-v0 band according to CKD_MT 1.00 [1/m] | |||
| 12572 | \param Cin strength scaling factor [1] | |||
| 12573 | \param model allows user defined input parameter set | |||
| 12574 | (Cin)<br> | |||
| 12575 | or choice of | |||
| 12576 | pre-defined parameters of specific models (see note below). | |||
| 12577 | \param f_grid predefined frequency grid [Hz] | |||
| 12578 | \param abs_p predefined pressure grid [Pa] | |||
| 12579 | \param abs_t predefined temperature grid [K] | |||
| 12580 | \param vmr O2 volume mixing ratio profile [1] | |||
| 12581 | ||||
| 12582 | \remark Mlawer, Clough, Brown, Stephen, Landry, Goldman, Murcray,<br> | |||
| 12583 | Observed Atmospheric Collision Induced Absorption in Near Infrared Oxygen Bands,<br> | |||
| 12584 | J. Geophys. Res., 103, D4, 3859-3863, 1998. | |||
| 12585 | ||||
| 12586 | \note This absorption model is taken from the FORTRAN77 code of | |||
| 12587 | CKD_MT version 1.00 written by<br> | |||
| 12588 | Atmospheric and Environmental Research Inc. (AER),<br> | |||
| 12589 | Radiation and Climate Group<br> | |||
| 12590 | 131 Hartwell Avenue<br> | |||
| 12591 | Lexington, MA 02421, USA<br> | |||
| 12592 | http://www.rtweb.aer.com/continuum_frame.html<br> | |||
| 12593 | <br> | |||
| 12594 | Oxygen band absorption model for the \f$a^1\Delta_g\f$ | |||
| 12595 | \htmlonly←\endhtmlonly \latexonly$\leftarrow$\endlatexonly | |||
| 12596 | \f$X^3\Sigma^-_g\f$ band system considering the | |||
| 12597 | \f$\nu=0\f$ | |||
| 12598 | \htmlonly←\endhtmlonly \latexonly$\leftarrow$\endlatexonly | |||
| 12599 | \f$\nu=1\f$ | |||
| 12600 | transitions. | |||
| 12601 | ||||
| 12602 | \author Thomas Kuhn | |||
| 12603 | \date 2002-28-08 | |||
| 12604 | */ | |||
| 12605 | void CKD_mt_v1v0_o2 (MatrixView pxsec, | |||
| 12606 | const Numeric Cin, | |||
| 12607 | const String& model, | |||
| 12608 | ConstVectorView f_grid, | |||
| 12609 | ConstVectorView abs_p, | |||
| 12610 | ConstVectorView abs_t, | |||
| 12611 | ConstVectorView vmr, | |||
| 12612 | const Verbosity& verbosity) | |||
| 12613 | { | |||
| 12614 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 12615 | ||||
| 12616 | // check the model name about consistency | |||
| 12617 | if ((model != "user") && (model != "CKDMT100")) | |||
| 12618 | { | |||
| 12619 | ostringstream os; | |||
| 12620 | os << "!!ERROR!!\n" | |||
| 12621 | << "CKD_MT1.00 O2 band at 1.06 micrometer:\n" | |||
| 12622 | << "INPUT model name is: " << model << ".\n" | |||
| 12623 | << "VALID model names are user and CKDMT100\n"; | |||
| 12624 | throw runtime_error(os.str()); | |||
| 12625 | } | |||
| 12626 | ||||
| 12627 | ||||
| 12628 | // scaling factor of the O2 v1<-v0 band absorption | |||
| 12629 | Numeric ScalingFac = 1.0000e0; | |||
| 12630 | if ( model == "user" ) | |||
| 12631 | { | |||
| 12632 | ScalingFac = Cin; // input scaling factor of calculated absorption | |||
| 12633 | }; | |||
| 12634 | ||||
| 12635 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 12636 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 12637 | ||||
| 12638 | ||||
| 12639 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 12640 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 12640 , "n_p==abs_t.nelem()") : (void)0); | |||
| 12641 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 12641 , "n_p==vmr.nelem()") : (void)0); | |||
| 12642 | ||||
| 12643 | // Check that dimensions of pxsec are consistent with n_f | |||
| 12644 | // and n_p. It should be [n_f,n_p]: | |||
| 12645 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 12645 , "n_f==pxsec.nrows()") : (void)0); | |||
| 12646 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 12646 , "n_p==pxsec.ncols()") : (void)0); | |||
| 12647 | ||||
| 12648 | ||||
| 12649 | // ************************** CKD stuff ************************************ | |||
| 12650 | ||||
| 12651 | const Numeric xLosmt = 2.686763e19; // Loschmidt Number [molecules/cm^3] | |||
| 12652 | const Numeric T1 = 273.0e0; | |||
| 12653 | const Numeric TO = 296.0e0; | |||
| 12654 | const Numeric PO = 1013.0e0; | |||
| 12655 | // FIXME const Numeric vmr_argon = 9.000e-3; // VMR of argon is assumed to be const. | |||
| 12656 | ||||
| 12657 | ||||
| 12658 | // CKD_MT 1.00 implementation of oxygen v1<-v0 band model of | |||
| 12659 | // Mlawer, Clough, Brown, Stephen, Landry, Goldman, Murcray, | |||
| 12660 | // "Observed Atmospheric Collision Induced Absorption in Near Infrared Oxygen Bands", | |||
| 12661 | // Journal of Geophysical Research, vol 103, no. D4, pp. 3859-3863, 1998. | |||
| 12662 | const Numeric V1S = O2_10_ckd_mt_100_v1; | |||
| 12663 | const Numeric V2S = O2_10_ckd_mt_100_v2; | |||
| 12664 | const Numeric DVS = O2_10_ckd_mt_100_dv; | |||
| 12665 | const Numeric V1_osc = 9375.000e0; | |||
| 12666 | const Numeric HW1 = 58.960e0; | |||
| 12667 | const Numeric V2_osc = 9439.000e0; | |||
| 12668 | const Numeric HW2 = 45.040e0; | |||
| 12669 | const Numeric S1 = 1.166e-4; | |||
| 12670 | const Numeric S2 = 3.086e-5; | |||
| 12671 | ||||
| 12672 | ||||
| 12673 | // It is assumed here that f_grid is monotonically increasing with index! | |||
| 12674 | // In future change this return into a change of the loop over | |||
| 12675 | // the frequency f_grid. n_f_new < n_f | |||
| 12676 | Numeric V1ABS = f_grid[0] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 12677 | Numeric V2ABS = f_grid[n_f-1] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 12678 | if ( (V1ABS < O2_10_ckd_mt_100_v1) || (V1ABS > O2_10_ckd_mt_100_v2) || | |||
| 12679 | (V2ABS < O2_10_ckd_mt_100_v1) || (V2ABS > O2_10_ckd_mt_100_v2) ) | |||
| 12680 | { | |||
| 12681 | out3 << "WARNING:\n" | |||
| 12682 | << " CKD_MT 1.00 O2 v1<-v0 band:\n" | |||
| 12683 | << " input frequency vector exceeds range of model validity\n" | |||
| 12684 | << " " << O2_10_ckd_mt_100_v1 << "<->" << O2_10_ckd_mt_100_v2 << "cm^-1\n"; | |||
| 12685 | } | |||
| 12686 | ||||
| 12687 | ||||
| 12688 | // ------------------- subroutine O2INF2 ---------------------------- | |||
| 12689 | ||||
| 12690 | // retrieve the appropriate array sequence of the CKD model array. | |||
| 12691 | Numeric DVC = DVS; | |||
| 12692 | Numeric V1C = V1ABS - DVC; | |||
| 12693 | Numeric V2C = V2ABS + DVC; | |||
| 12694 | ||||
| 12695 | int NPTC = (int)( ((V2C-V1C)/DVC) + 3 ); | |||
| 12696 | ||||
| 12697 | V2C = V1C + ( DVC * (Numeric)(NPTC-1) ); | |||
| 12698 | ||||
| 12699 | if (NPTC < 1) | |||
| 12700 | { | |||
| 12701 | out3 << "WARNING:\n" | |||
| 12702 | << " CKD_MT 1.00 O2 v1<-v0 band:\n" | |||
| 12703 | << " no elements of internal continuum coefficients could be found for the\n" | |||
| 12704 | << " input frequency range.\n" | |||
| 12705 | << " Leave the function without calculating the absorption.\n"; | |||
| 12706 | return; | |||
| 12707 | } | |||
| 12708 | ||||
| 12709 | Numeric C[NPTC+addF77fields]; | |||
| 12710 | C[0] = 0.000e0; // not used field of array | |||
| 12711 | ||||
| 12712 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 12713 | { | |||
| 12714 | C[J] = 0.000e0; | |||
| 12715 | Numeric VJ = V1C + (DVC * (Numeric)(J-1)); | |||
| 12716 | ||||
| 12717 | if ( (VJ > V1S) && (VJ < V2S) ) | |||
| 12718 | { | |||
| 12719 | Numeric DV1 = VJ - V1_osc; | |||
| 12720 | Numeric DV2 = VJ - V2_osc; | |||
| 12721 | ||||
| 12722 | Numeric DAMP1 = 1.00e0; | |||
| 12723 | Numeric DAMP2 = 1.00e0; | |||
| 12724 | ||||
| 12725 | if ( DV1 < 0.00e0 ) | |||
| 12726 | { | |||
| 12727 | DAMP1 = exp(DV1 / 176.100e0); | |||
| 12728 | } | |||
| 12729 | ||||
| 12730 | if ( DV2 < 0.00e0 ) | |||
| 12731 | { | |||
| 12732 | DAMP2 = exp(DV2 / 176.100e0); | |||
| 12733 | } | |||
| 12734 | ||||
| 12735 | Numeric O2INF = 0.31831e0 * | |||
| 12736 | ( ((S1 * DAMP1 / HW1)/(1.000e0 + pow((DV1/HW1),(Numeric)2.0e0) )) + | |||
| 12737 | ((S2 * DAMP2 / HW2)/(1.000e0 + pow((DV2/HW2),(Numeric)2.0e0) )) ) * 1.054e0; | |||
| 12738 | C[J] = O2INF / VJ; | |||
| 12739 | } | |||
| 12740 | } | |||
| 12741 | ||||
| 12742 | ||||
| 12743 | // ------------------- subroutine O2INF2 ---------------------------- | |||
| 12744 | ||||
| 12745 | ||||
| 12746 | // Loop pressure/temperature: | |||
| 12747 | for ( Index i = 0 ; i < n_p ; ++i ) | |||
| 12748 | { | |||
| 12749 | Numeric Tave = abs_t[i]; // [K] | |||
| 12750 | Numeric Pave = (abs_p[i]*1.000e-2); // [hPa] | |||
| 12751 | Numeric vmro2 = vmr[i]; // [1] | |||
| 12752 | Numeric WTOT = 1.000e-20 * xLosmt * (Pave/PO) * (T1/Tave); // [molecules/cm^2] | |||
| 12753 | Numeric ADJWO2 = (vmro2 / 0.209e0) * WTOT * (Pave/PO) * (TO/Tave); | |||
| 12754 | Numeric XKT = Tave / 1.4387752; // = (T*k_B) / (h*c) | |||
| 12755 | ||||
| 12756 | // Molecular cross section calculated by CKD. | |||
| 12757 | // The cross sectionis calculated on the predefined | |||
| 12758 | // CKD wavenumber grid. | |||
| 12759 | Numeric k[NPTC+addF77fields]; // [1/cm] | |||
| 12760 | k[0] = 0.00e0; // not used array field | |||
| 12761 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 12762 | { | |||
| 12763 | Numeric VJ = V1C + (DVC * (Numeric)(J-1)); | |||
| 12764 | Numeric SO2 = 0.0e0; | |||
| 12765 | if (C[J] > 0.0e0) | |||
| 12766 | { | |||
| 12767 | SO2 = ADJWO2 * C[J]; | |||
| 12768 | } | |||
| 12769 | ||||
| 12770 | // CKD cross section without radiative field | |||
| 12771 | k[J] = SO2 * RADFN_FUN(VJ,XKT); // [1] | |||
| 12772 | } | |||
| 12773 | ||||
| 12774 | ||||
| 12775 | // Loop input frequency array. The previously calculated cross section | |||
| 12776 | // has therefore to be interpolated on the input frequencies. | |||
| 12777 | for ( Index s = 0 ; s < n_f ; ++s ) | |||
| 12778 | { | |||
| 12779 | // calculate the associated wave number (= 1/wavelength) | |||
| 12780 | Numeric V = f_grid[s] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 12781 | if ( (V > V1S) && (V < V2S) ) | |||
| 12782 | { | |||
| 12783 | // arts cross section [1/m] | |||
| 12784 | // interpolate the k vector on the f_grid grid | |||
| 12785 | pxsec(s,i) += ScalingFac * 1.000e2 * XINT_FUN(V1C,V2C,DVC,k, | |||
| 12786 | NPTC+addF77fields,V); | |||
| 12787 | } | |||
| 12788 | } | |||
| 12789 | } | |||
| 12790 | ||||
| 12791 | } | |||
| 12792 | // ================================================================================= | |||
| 12793 | ||||
| 12794 | //! CKD version MT 2.50 O2 | |||
| 12795 | /*! | |||
| 12796 | Model reference: | |||
| 12797 | O2 continuum formulated by Greenblatt et al. over the spectral region | |||
| 12798 | 8797-29870 cm-1: "Absorption Coefficients of Oxygen Between | |||
| 12799 | 330 and 1140 nm, G.D. Green blatt, J.J. Orlando, J.B. Burkholder, | |||
| 12800 | and A.R. Ravishabkara, J. Geophys. Res., 95, 18577-18582, 1990. | |||
| 12801 | ||||
| 12802 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 12803 | O2 v1<-v0 band according to CKD_MT 1.00 [1/m] | |||
| 12804 | \param Cin strength scaling factor [1] | |||
| 12805 | \param model allows user defined input parameter set | |||
| 12806 | (Cin)<br> | |||
| 12807 | or choice of | |||
| 12808 | pre-defined parameters of specific models (see note below). | |||
| 12809 | \param f_grid predefined frequency grid [Hz] | |||
| 12810 | \param abs_p predefined pressure grid [Pa] | |||
| 12811 | \param abs_t predefined temperature grid [K] | |||
| 12812 | \param vmr O2 volume mixing ratio profile [1] | |||
| 12813 | ||||
| 12814 | ||||
| 12815 | \note This absorption model is taken from the FORTRAN77 code of | |||
| 12816 | CKD_MT version 2.50 written by<br> | |||
| 12817 | Atmospheric and Environmental Research Inc. (AER),<br> | |||
| 12818 | Radiation and Climate Group<br> | |||
| 12819 | 131 Hartwell Avenue<br> | |||
| 12820 | Lexington, MA 02421, USA<br> | |||
| 12821 | http://www.rtweb.aer.com/continuum_frame.html<br> | |||
| 12822 | <br> | |||
| 12823 | Oxygen band absorption model for the \f$a^1\Delta_g\f$ | |||
| 12824 | \htmlonly←\endhtmlonly \latexonly$\leftarrow$\endlatexonly | |||
| 12825 | \f$X^3\Sigma^-_g\f$ band system considering the | |||
| 12826 | \f$\nu=0\f$ | |||
| 12827 | \htmlonly←\endhtmlonly \latexonly$\leftarrow$\endlatexonly | |||
| 12828 | \f$\nu=1\f$ | |||
| 12829 | transitions. | |||
| 12830 | ||||
| 12831 | \author Mayuri Tatiya | |||
| 12832 | \date 2014-27-06 | |||
| 12833 | */ | |||
| 12834 | void CKD_mt_250_o2_vis (MatrixView pxsec, | |||
| 12835 | const Numeric Cin, | |||
| 12836 | const String& model, | |||
| 12837 | ConstVectorView f_grid, | |||
| 12838 | ConstVectorView abs_p, | |||
| 12839 | ConstVectorView abs_t, | |||
| 12840 | ConstVectorView DEBUG_ONLY(vmr)vmr, | |||
| 12841 | const Verbosity& verbosity) | |||
| 12842 | { | |||
| 12843 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 12844 | ||||
| 12845 | // check the model name about consistency | |||
| 12846 | if ((model != "user") && (model != "CKDMT252")) | |||
| 12847 | { | |||
| 12848 | ostringstream os; | |||
| 12849 | os << "!!ERROR!!\n" | |||
| 12850 | << "CKD_MT2.50 O2 band at 1.06 micrometer:\n" | |||
| 12851 | << "INPUT model name is: " << model << ".\n" | |||
| 12852 | << "VALID model names are user and CKDMT252\n"; | |||
| 12853 | throw runtime_error(os.str()); | |||
| 12854 | } | |||
| 12855 | ||||
| 12856 | ||||
| 12857 | // scaling factor of the O2 v1<-v0 band absorption | |||
| 12858 | Numeric ScalingFac = 1.0000e0; | |||
| 12859 | if ( model == "user" ) | |||
| 12860 | { | |||
| 12861 | ScalingFac = Cin; // input scaling factor of calculated absorption | |||
| 12862 | }; | |||
| 12863 | ||||
| 12864 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 12865 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 12866 | ||||
| 12867 | ||||
| 12868 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 12869 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 12869 , "n_p==abs_t.nelem()") : (void)0); | |||
| 12870 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 12870 , "n_p==vmr.nelem()") : (void)0); | |||
| 12871 | ||||
| 12872 | // Check that dimensions of pxsec are consistent with n_f | |||
| 12873 | // and n_p. It should be [n_f,n_p]: | |||
| 12874 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 12874 , "n_f==pxsec.nrows()") : (void)0); | |||
| 12875 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 12875 , "n_p==pxsec.ncols()") : (void)0); | |||
| 12876 | ||||
| 12877 | ||||
| 12878 | // ************************** CKD stuff ************************************ | |||
| 12879 | ||||
| 12880 | const Numeric xLosmt = 2.686763e19; // Loschmidt Number [molecules/cm^3] | |||
| 12881 | const Numeric T1 = 273.0e0; | |||
| 12882 | // const Numeric TO = 296.0e0; | |||
| 12883 | const Numeric PO = 1013.0e0; | |||
| 12884 | // FIXME const Numeric vmr_argon = 9.000e-3; // VMR of argon is assumed to be const. | |||
| 12885 | ||||
| 12886 | ||||
| 12887 | // "Observed Atmospheric Collision Induced Absorption in Near Infrared Oxygen Bands", | |||
| 12888 | // Journal of Geophysical Research, vol 103, no. D4, pp. 3859-3863, 1998. | |||
| 12889 | const Numeric V1S = O2_vis_ckd_mt_250_v1; | |||
| 12890 | const Numeric V2S = O2_vis_ckd_mt_250_v2; | |||
| 12891 | const Numeric DVS = O2_vis_ckd_mt_250_dv; | |||
| 12892 | ||||
| 12893 | // It is assumed here that f_grid is monotonically increasing with index! | |||
| 12894 | // In future change this return into a change of the loop over | |||
| 12895 | // the frequency f_grid. n_f_new < n_f | |||
| 12896 | Numeric V1ABS = f_grid[0] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 12897 | Numeric V2ABS = f_grid[n_f-1] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 12898 | if ( (V1ABS < O2_vis_ckd_mt_250_v1) || (V1ABS > O2_vis_ckd_mt_250_v2) || | |||
| 12899 | (V2ABS < O2_vis_ckd_mt_250_v1) || (V2ABS > O2_vis_ckd_mt_250_v2) ) | |||
| 12900 | { | |||
| 12901 | out3 << "WARNING:\n" | |||
| 12902 | << " CKD_MT 2.50 O2 vis band:\n" | |||
| 12903 | << " input frequency vector exceeds range of model validity\n" | |||
| 12904 | << " " << O2_vis_ckd_mt_250_v1 << "<->" << O2_vis_ckd_mt_250_v2 << "cm^-1\n"; | |||
| 12905 | } | |||
| 12906 | ||||
| 12907 | ||||
| 12908 | // ------------------- subroutine O2INF2 ---------------------------- | |||
| 12909 | ||||
| 12910 | // retrieve the appropriate array sequence of the CKD model array. | |||
| 12911 | Numeric DVC = DVS; | |||
| 12912 | Numeric V1C = V1ABS - DVC; | |||
| 12913 | Numeric V2C = V2ABS + DVC; | |||
| 12914 | ||||
| 12915 | int I1 = (int) ((V1C-O2_vis_ckd_mt_250_v1) / O2_vis_ckd_mt_250_dv); | |||
| 12916 | if (V1C < O2_vis_ckd_mt_250_v1) I1 = I1-1; | |||
| 12917 | V1C = O2_vis_ckd_mt_250_v1 + (O2_vis_ckd_mt_250_dv * (Numeric)I1); | |||
| 12918 | ||||
| 12919 | int I2 = (int) ((V2C-O2_vis_ckd_mt_250_v1) / O2_vis_ckd_mt_250_dv); | |||
| 12920 | ||||
| 12921 | int NPTC = I2-I1+3; | |||
| 12922 | ||||
| 12923 | V2C = V1C + O2_vis_ckd_mt_250_dv * (Numeric)(NPTC-1); | |||
| 12924 | ||||
| 12925 | if (NPTC < 1) | |||
| 12926 | { | |||
| 12927 | out3 << "WARNING:\n" | |||
| 12928 | << " CKD_MT 2.50 O2 vis band:\n" | |||
| 12929 | << " no elements of internal continuum coefficients could be found for the\n" | |||
| 12930 | << " input frequency range.\n" | |||
| 12931 | << " Leave the function without calculating the absorption.\n"; | |||
| 12932 | return; | |||
| 12933 | } | |||
| 12934 | ||||
| 12935 | Numeric CO[(int)(NPTC+addF77fields)]; | |||
| 12936 | ||||
| 12937 | ||||
| 12938 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 12939 | { | |||
| 12940 | CO[J] = 0.000e0; | |||
| 12941 | Index I = I1+J; | |||
| 12942 | if ( (I > 0) && (I <= O2_vis_ckd_mt_250_npt) ) | |||
| 12943 | { | |||
| 12944 | Numeric VJ = V1C + (DVC * (Numeric)(J-1)); | |||
| 12945 | CO[J] = O2_vis_ckd_mt_250[I] / VJ; | |||
| 12946 | } | |||
| 12947 | } | |||
| 12948 | ||||
| 12949 | ||||
| 12950 | // ------------------- subroutine O2_vis ---------------------------- | |||
| 12951 | ||||
| 12952 | ||||
| 12953 | // Loop pressure/temperature: | |||
| 12954 | for ( Index i = 0 ; i < n_p ; ++i ) | |||
| 12955 | { | |||
| 12956 | Numeric Tave = abs_t[i]; // [K] | |||
| 12957 | Numeric Pave = (abs_p[i]*1.000e-2); // [hPa] | |||
| 12958 | // Numeric vmro2 = vmr[i]; // [1] | |||
| 12959 | Numeric WTOT = 1.000e-20 * xLosmt * (Pave/PO) * (T1/Tave); // [molecules/cm^2] | |||
| 12960 | Numeric XKT = Tave / 1.4387752; // = (T*k_B) / (h*c) | |||
| 12961 | Numeric tau_fac= WTOT * (Pave/PO) * (T1/Tave); | |||
| 12962 | ||||
| 12963 | // these are the conditions reported in the paper by Greenblatt et al. for | |||
| 12964 | // the spectrum of Fig. 1. | |||
| 12965 | ||||
| 12966 | // conditions: 55 atm.; 296 K; 89.5 cm path | |||
| 12967 | ||||
| 12968 | Numeric factor = 1.000e0/(xLosmt*1.e-20*pow( (55.e0*273.0e0/296.0e0), 2)*89.5); | |||
| 12969 | ||||
| 12970 | // Molecular cross section calculated by CKD. | |||
| 12971 | // The cross sectionis calculated on the predefined | |||
| 12972 | // CKD wavenumber grid. | |||
| 12973 | Numeric k[NPTC+addF77fields]; // [1/cm] | |||
| 12974 | k[0] = 0.00e0; // not used array field | |||
| 12975 | for (Index J = 1 ; J <= NPTC ; ++J) | |||
| 12976 | { | |||
| 12977 | Numeric VJ = V1C + (DVC * (Numeric)(J-1)); | |||
| 12978 | Numeric SO2 = 0.0e0; | |||
| 12979 | ||||
| 12980 | SO2 = CO[J] * factor * tau_fac; | |||
| 12981 | ||||
| 12982 | // CKD cross section without radiative field | |||
| 12983 | k[J] = SO2 * RADFN_FUN(VJ,XKT); // [1] | |||
| 12984 | } | |||
| 12985 | ||||
| 12986 | ||||
| 12987 | // Loop input frequency array. The previously calculated cross section | |||
| 12988 | // has therefore to be interpolated on the input frequencies. | |||
| 12989 | for ( Index s = 0 ; s < n_f ; ++s ) | |||
| 12990 | { | |||
| 12991 | // calculate the associated wave number (= 1/wavelength) | |||
| 12992 | Numeric V = f_grid[s] / (SPEED_OF_LIGHT * 1.00e2); // [cm^-1] | |||
| 12993 | if ( (V > V1S) && (V < V2S) ) | |||
| 12994 | { | |||
| 12995 | // arts cross section [1/m] | |||
| 12996 | // interpolate the k vector on the f_grid grid | |||
| 12997 | pxsec(s,i) += ScalingFac * 1.000e2 * XINT_FUN(V1C,V2C,DVC,k, | |||
| 12998 | NPTC+addF77fields,V); | |||
| 12999 | } | |||
| 13000 | } | |||
| 13001 | } | |||
| 13002 | ||||
| 13003 | } | |||
| 13004 | ||||
| 13005 | // ################################################################################# | |||
| 13006 | ||||
| 13007 | //! CKD version 2.4 H2O continuum absorption model | |||
| 13008 | /*! | |||
| 13009 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 13010 | H2O continuum according to CKD2.4 [1/m] | |||
| 13011 | \param isf =0 self continuum, =1 foreign continuum | |||
| 13012 | \param Cin strength scaling factor [1] | |||
| 13013 | \param model allows user defined input parameter set | |||
| 13014 | (Cin)<br> or choice of | |||
| 13015 | pre-defined parameters of specific models (see note below). | |||
| 13016 | \param f_grid predefined frequency grid [Hz] | |||
| 13017 | \param abs_p predefined pressure grid [Pa] | |||
| 13018 | \param abs_t predefined temperature grid [K] | |||
| 13019 | \param vmr H2O volume mixing ratio profile [1] | |||
| 13020 | \param abs_n2 N2 volume mixing ratio profile [1] | |||
| 13021 | ||||
| 13022 | \note this "crude" version of the CKD2.4 model is a f2c | |||
| 13023 | conversion of the F77 code taken out of MonoRTM RT-model written by<br> | |||
| 13024 | S. BOUKABARA, S.A. CLOUGH, and R. HOFFMAN<br> | |||
| 13025 | Atmospheric and Environmental Research Inc. (AER),<br> | |||
| 13026 | Radiation and Climate Group<br> | |||
| 13027 | 131 Hartwell Avenue<br> | |||
| 13028 | Lexington, MA 02421<br> | |||
| 13029 | USA<br> | |||
| 13030 | E-mail: sboukaba@aer.com, clough@aer.com | |||
| 13031 | ||||
| 13032 | \remark Reference: A. Borysow and L. Frommhold, | |||
| 13033 | The Astrophysical Journal, vol.311, pp.1043-1057, 1986 | |||
| 13034 | see <a href="http://adsabs.harvard.edu/article_service.html">for a scanned | |||
| 13035 | version of the paper</a>. | |||
| 13036 | ||||
| 13037 | \author Thomas Kuhn | |||
| 13038 | \date 2002-03-06 | |||
| 13039 | */ | |||
| 13040 | void CKD24_H20 (MatrixView pxsec, | |||
| 13041 | int isf, | |||
| 13042 | const Numeric Cin, | |||
| 13043 | const String& model, | |||
| 13044 | ConstVectorView f_grid, | |||
| 13045 | ConstVectorView abs_p, | |||
| 13046 | ConstVectorView abs_t, | |||
| 13047 | ConstVectorView vmr, | |||
| 13048 | ConstVectorView abs_n2, | |||
| 13049 | const Verbosity& verbosity) | |||
| 13050 | { | |||
| 13051 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 13052 | ||||
| 13053 | // | |||
| 13054 | // | |||
| 13055 | // external function to call (original F77 code translated with f2c) | |||
| 13056 | /* INPUT PARAMETERS: */ | |||
| 13057 | /* P [hPa] TOTAL PRESSURE */ | |||
| 13058 | /* T [K] TEMPERATURE */ | |||
| 13059 | /* VMRH2O [1] H2O VOLUME MIXING RATIO */ | |||
| 13060 | /* VMRN2 [1] N2 VOLUME MIXING RATIO */ | |||
| 13061 | /* VMRO2 [1] O2 VOLUME MIXING RATIO */ | |||
| 13062 | /* FREQ [Hz] FREQUENCY OF CALCULATION */ | |||
| 13063 | extern double artsckd_(double p, double t, | |||
| 13064 | double vmrh2o, double vmrn2, double vmro2, | |||
| 13065 | double freq, int ivc); | |||
| 13066 | // | |||
| 13067 | // --------- STANDARD MODEL PARAMETERS --------------------------------------------------- | |||
| 13068 | Numeric XFAC = 1.0000; // scaling factor | |||
| 13069 | // --------------------------------------------------------------------------------------- | |||
| 13070 | ||||
| 13071 | ||||
| 13072 | // check the model name about consistency | |||
| 13073 | if ((model != "user") && (model != "CKD24")) | |||
| 13074 | { | |||
| 13075 | ostringstream os; | |||
| 13076 | os << "!!ERROR!!\n" | |||
| 13077 | << "CKDv2.4.2 H2O self/foreign continuum:\n" | |||
| 13078 | << "INPUT model name is: " << model << ".\n" | |||
| 13079 | << "VALID model names are user and CKD24\n"; | |||
| 13080 | throw runtime_error(os.str()); | |||
| 13081 | } | |||
| 13082 | ||||
| 13083 | ||||
| 13084 | // select the parameter set (!!model dominates values!!): | |||
| 13085 | if ( model == "CKD24" ) | |||
| 13086 | { | |||
| 13087 | XFAC = 1.0000; | |||
| 13088 | } | |||
| 13089 | else if ( model == "user" ) | |||
| 13090 | { | |||
| 13091 | XFAC = Cin; | |||
| 13092 | } | |||
| 13093 | else | |||
| 13094 | { | |||
| 13095 | if (isf == 0) { | |||
| 13096 | ostringstream os; | |||
| 13097 | os << "H2O-SelfContCKD24: ERROR! Wrong model values given.\n" | |||
| 13098 | << "allowed models are: 'CKD24', 'user'" << '\n'; | |||
| 13099 | throw runtime_error(os.str()); | |||
| 13100 | } | |||
| 13101 | if (isf == 1) { | |||
| 13102 | ostringstream os; | |||
| 13103 | os << "H2O-ForeignContCKD: ERROR! Wrong model values given.\n" | |||
| 13104 | << "allowed models are: 'CKD24', 'user'" << '\n'; | |||
| 13105 | throw runtime_error(os.str()); | |||
| 13106 | } | |||
| 13107 | } | |||
| 13108 | ||||
| 13109 | if (isf == 0) { | |||
| 13110 | out3 << "H2O-SelfContCKD24: (model=" << model << ") parameter values in use:\n" | |||
| 13111 | << " XFAC = " << XFAC << "\n"; | |||
| 13112 | } | |||
| 13113 | if (isf == 1) { | |||
| 13114 | out3 << "H2O-ForeignContCKD: (model=" << model << ") parameter values in use:\n" | |||
| 13115 | << " XFAC = " << XFAC << "\n"; | |||
| 13116 | } | |||
| 13117 | ||||
| 13118 | ||||
| 13119 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 13120 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 13121 | ||||
| 13122 | ||||
| 13123 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 13124 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 13124 , "n_p==abs_t.nelem()") : (void)0); | |||
| 13125 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 13125 , "n_p==vmr.nelem()") : (void)0); | |||
| 13126 | ||||
| 13127 | // Check that dimensions of pxsec are consistent with n_f | |||
| 13128 | // and n_p. It should be [n_f,n_p]: | |||
| 13129 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 13129 , "n_f==pxsec.nrows()") : (void)0); | |||
| 13130 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 13130 , "n_p==pxsec.ncols()") : (void)0); | |||
| 13131 | ||||
| 13132 | // ivc = 1 : N2-N2 CKD version of Borysow-Fromhold model | |||
| 13133 | // ivc = 21 : H2O CKD2.4 self cont part | |||
| 13134 | // ivc = 22 : H2O CKD2.4 foreign cont part | |||
| 13135 | // ivc = 31 : MPMf87/s93 self cont part | |||
| 13136 | // ivc = 32 : MPMf87/s93 foreign cont part | |||
| 13137 | int ivc = 55; | |||
| 13138 | if (isf == 0) { | |||
| 13139 | ivc = 21; // CKD2.4 self continuum | |||
| 13140 | // ivc = 31; // MPMf87/s93 self continuum | |||
| 13141 | } | |||
| 13142 | if (isf == 1) { | |||
| 13143 | ivc = 22; // CKD2.4 foreign continuum | |||
| 13144 | //ivc = 32; // MPMf87/s93 foreign continuum | |||
| 13145 | } | |||
| 13146 | if ((ivc != 1) && (ivc != 21) && (ivc != 22) && (ivc != 31) && (ivc != 32)) { | |||
| 13147 | ostringstream os; | |||
| 13148 | os << "!!ERROR: CKD24 H2O model: wrong input parameter isf (=0,1) given!\n" | |||
| 13149 | << "retrun without calculation!" << "\n" | |||
| 13150 | << "actual value of isf is " << isf << "\n"; | |||
| 13151 | throw runtime_error(os.str()); | |||
| 13152 | return; | |||
| 13153 | } | |||
| 13154 | // ivc = 1; | |||
| 13155 | ||||
| 13156 | // Loop pressure/temperature: | |||
| 13157 | for ( Index i=0; i<n_p; ++i ) | |||
| 13158 | { | |||
| 13159 | double T = (double) abs_t[i]; // [K] | |||
| 13160 | double p = (double) (abs_p[i]*1.000e-2); // [hPa] | |||
| 13161 | double vmrh2o = (double) vmr[i]; // [1] | |||
| 13162 | double vmrn2 = (double) abs_n2[i]; // [1] | |||
| 13163 | double vmro2 = 0.0e0; // [1] | |||
| 13164 | ||||
| 13165 | //cout << "------------------------------------------------\n"; | |||
| 13166 | //cout << "CKD2.4 H2O: ivc =" << ivc << "\n"; | |||
| 13167 | //cout << "CKD2.4 H2O: T =" << T << " K\n"; | |||
| 13168 | //cout << "CKD2.4 H2O: p =" << p << " hPa\n"; | |||
| 13169 | //cout << "CKD2.4 H2O: vmrh2o=" << vmrh2o << "\n"; | |||
| 13170 | //cout << "CKD2.4 H2O: vmrn2 =" << vmrn2 << "\n"; | |||
| 13171 | //cout << "CKD2.4 H2O: vmro2 =" << vmro2 << "\n"; | |||
| 13172 | // Loop frequency: | |||
| 13173 | for ( Index s=0; s<n_f; ++s ) | |||
| 13174 | { | |||
| 13175 | // the second vmr of N2 will be multiplied at the stage of | |||
| 13176 | // absorption calculation: abs = vmr * pxsec. | |||
| 13177 | double f = (double) f_grid[s]; // [Hz] | |||
| 13178 | if (ivc == 1) { // ---------- N2 ----------------- | |||
| 13179 | if (abs_n2[i] > 0.0e0) { | |||
| 13180 | //cout << "CKD2.4 N2: f =" << f << " Hz\n"; | |||
| 13181 | double cont = artsckd_(p, T, vmrh2o, vmrn2, vmro2, f, ivc); | |||
| 13182 | pxsec(s,i) += (Numeric) (cont / vmr[i]); | |||
| 13183 | //cout << "CKD2.4 N2: abs =" << cont << " 1/m\n"; | |||
| 13184 | } | |||
| 13185 | } else { // ---------------- H2O ----------------- | |||
| 13186 | if (vmr[i] > 0.0e0) { | |||
| 13187 | //cout << "CKD2.4 H2O: f =" << f << " Hz\n"; | |||
| 13188 | double cont = artsckd_(p, T, vmrh2o, vmrn2, vmro2, f, ivc); | |||
| 13189 | pxsec(s,i) += (Numeric) (cont / vmr[i]); | |||
| 13190 | //cout << "CKD2.4 H2O: abs =" << cont << " 1/m\n"; | |||
| 13191 | } | |||
| 13192 | } | |||
| 13193 | } | |||
| 13194 | } | |||
| 13195 | return; | |||
| 13196 | } | |||
| 13197 | // | |||
| 13198 | // ################################################################################# | |||
| 13199 | //! Pardo_ATM_H2O_ForeignContinuum | |||
| 13200 | /*! | |||
| 13201 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 13202 | N2-continuum according to Rosenkranz, 1993 [1/m] | |||
| 13203 | \param Cin continuum strength [1/m * 1/(Hz*Pa)²] | |||
| 13204 | \param model allows user defined input parameter set | |||
| 13205 | (Cin and xTin)<br> or choice of | |||
| 13206 | pre-defined parameters of specific models (see note below). | |||
| 13207 | \param f_grid predefined frequency grid [Hz] | |||
| 13208 | \param abs_p predefined pressure grid [Pa] | |||
| 13209 | \param abs_t predefined temperature grid [K] | |||
| 13210 | \param vmr H2O volume mixing ratio [1] | |||
| 13211 | ||||
| 13212 | \note Except for model 'user' the input parameters Cin and xTin | |||
| 13213 | are neglected (model dominates over parameters).<br> | |||
| 13214 | Allowed models: 'ATM', and 'user'. | |||
| 13215 | See the user guide for detailed explanations. | |||
| 13216 | ||||
| 13217 | \remark Reference: Pardo et al., IEEE, Trans. Ant. Prop., <br> | |||
| 13218 | Vol 49, No 12, pp. 1683-1694, 2001. | |||
| 13219 | ||||
| 13220 | \author Thomas Kuhn | |||
| 13221 | \date 2001-04-10 | |||
| 13222 | */ | |||
| 13223 | ||||
| 13224 | void Pardo_ATM_H2O_ForeignContinuum (MatrixView pxsec, | |||
| 13225 | const Numeric Cin, | |||
| 13226 | const String& model, | |||
| 13227 | ConstVectorView f_grid, | |||
| 13228 | ConstVectorView abs_p, | |||
| 13229 | ConstVectorView abs_t, | |||
| 13230 | ConstVectorView vmr, | |||
| 13231 | const Verbosity& verbosity) | |||
| 13232 | { | |||
| 13233 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 13234 | ||||
| 13235 | // --------- STANDARD MODEL PARAMETERS --------------------------------------------------- | |||
| 13236 | // standard values for the Pardo et al. model (IEEE, Trans. Ant. Prop., | |||
| 13237 | // Vol 49, No 12, pp. 1683-1694, 2001) | |||
| 13238 | const Numeric C_ATM = 0.0315; // [1/m] | |||
| 13239 | // --------------------------------------------------------------------------------------- | |||
| 13240 | ||||
| 13241 | // select the parameter set (!!model dominates parameters!!): | |||
| 13242 | Numeric C; | |||
| 13243 | if ( model == "ATM" ) | |||
| 13244 | { | |||
| 13245 | C = C_ATM; | |||
| 13246 | } | |||
| 13247 | else if ( model == "user" ) | |||
| 13248 | { | |||
| 13249 | C = Cin; | |||
| 13250 | } | |||
| 13251 | else | |||
| 13252 | { | |||
| 13253 | ostringstream os; | |||
| 13254 | os << "H2O-ForeignContATM01: ERROR! Wrong model values given.\n" | |||
| 13255 | << "allowed models are: 'ATM', 'user'" << '\n'; | |||
| 13256 | throw runtime_error(os.str()); | |||
| 13257 | } | |||
| 13258 | out3 << "H2O-ForeignContATM01: (model=" << model << ") parameter values in use:\n" | |||
| 13259 | << " C_f = " << C << "\n"; | |||
| 13260 | ||||
| 13261 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 13262 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 13263 | ||||
| 13264 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 13265 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 13265 , "n_p==abs_t.nelem()") : (void)0); | |||
| 13266 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 13266 , "n_p==vmr.nelem()") : (void)0); | |||
| 13267 | ||||
| 13268 | // Check that dimensions of pxsec are consistent with n_f | |||
| 13269 | // and n_p. It should be [n_f,n_p]: | |||
| 13270 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 13270 , "n_f==pxsec.nrows()") : (void)0); | |||
| 13271 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 13271 , "n_p==pxsec.ncols()") : (void)0); | |||
| 13272 | ||||
| 13273 | // Loop over pressure/temperature grid: | |||
| 13274 | for ( Index i=0; i<n_p; ++i ) | |||
| 13275 | { | |||
| 13276 | // since this is an effective "dry air" continuum, it is not really | |||
| 13277 | // it is not specifically attributed to N2, so we need the total | |||
| 13278 | // dry air part in total which is equal to the total minus the | |||
| 13279 | // water vapor pressure: | |||
| 13280 | Numeric pd = abs_p[i] * ( 1.00000e0 - vmr[i] ); // [Pa] | |||
| 13281 | // since the H2O VMR will be multiplied in abs_coefCalc, we omit it here | |||
| 13282 | Numeric pwdummy = abs_p[i] ; // [Pa] | |||
| 13283 | // Loop over frequency grid: | |||
| 13284 | for ( Index s=0; s<n_f; ++s ) | |||
| 13285 | { | |||
| 13286 | // Becaue this is an effective "dry air" continuum, it is not really | |||
| 13287 | // specific N2 but mainly caused by N2. Therefore the N2 vmr must be | |||
| 13288 | // canceled out here which is later in abs_coefCalc multiplied | |||
| 13289 | // (calculation: abs = vmr * pxsec): | |||
| 13290 | pxsec(s,i) += C * // strength [1/(m*Hz²Pa²)] | |||
| 13291 | pow( (f_grid[s]/(Numeric)2.25e11), (Numeric)2. ) * // quadratic f dependence [1] | |||
| 13292 | pow( ((Numeric)300.0/abs_t[i]), (Numeric)3. ) * // free T dependence [1] | |||
| 13293 | (pd/1.01300e5) * // p_dry dependence [1] | |||
| 13294 | (pwdummy/1.01300e5); // p_H2O dependence [1] | |||
| 13295 | } | |||
| 13296 | } | |||
| 13297 | } | |||
| 13298 | // | |||
| 13299 | // ################################################################################# | |||
| 13300 | // | |||
| 13301 | //! MPM93 H2O pseudo continuum line parameters: | |||
| 13302 | /*! | |||
| 13303 | see publication side of National Telecommunications and Information Administration | |||
| 13304 | http://www.its.bldrdoc.gov/pub/all_pubs/all_pubs.html | |||
| 13305 | and ftp side for downloading the MPM93 original source code: | |||
| 13306 | ftp://ftp.its.bldrdoc.gov/pub/mpm93/ | |||
| 13307 | ||||
| 13308 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 13309 | H2O according to MPM87 [1/m] | |||
| 13310 | \param fcenter continuum pseudo-line center frequency [Hz] | |||
| 13311 | \param b1 continuum pseudo-line line strength [Hz/Pa] | |||
| 13312 | \param b2 continuum pseudo-line line strength temperature exponent [1] | |||
| 13313 | \param b3 continuum pseudo-line line broadening parameter [Hz/Pa] | |||
| 13314 | \param b4 continuum pseudo-line line broadening parameter [1] | |||
| 13315 | \param b5 continuum pseudo-line line broadening parameter [1] | |||
| 13316 | \param b6 continuum pseudo-line line broadening parameter [1] | |||
| 13317 | \param model allows user defined input parameter set | |||
| 13318 | (fcenter and b1 to b6)<br> or choice of | |||
| 13319 | pre-defined parameters of specific models (see note below). | |||
| 13320 | \param f_grid predefined frequency grid [Hz] | |||
| 13321 | \param abs_p predefined pressure grid [Pa] | |||
| 13322 | \param abs_t predefined temperature grid [K] | |||
| 13323 | \param vmr H2O volume mixing ratio [1] | |||
| 13324 | ||||
| 13325 | \note Except for model 'user' the input parameters fcenter and b1 to b6 | |||
| 13326 | are neglected (model dominates over parameters).<br> | |||
| 13327 | Allowed models: 'MPM93' and 'user'. | |||
| 13328 | See the user guide for detailed explanations. | |||
| 13329 | ||||
| 13330 | \remark Reference: H. J. Liebe and G. A. Hufford and M. G. Cotton,<br> | |||
| 13331 | <i>Propagation modeling of moist air and suspended water/ice | |||
| 13332 | particles at frequencies below 1000 GHz</i>,<br> | |||
| 13333 | AGARD 52nd Specialists Meeting of the Electromagnetic Wave | |||
| 13334 | Propagation Panel,<br> Palma de Mallorca, Spain, 1993, May 17-21 | |||
| 13335 | ||||
| 13336 | \author Thomas Kuhn | |||
| 13337 | \date 2001-11-05 | |||
| 13338 | */ | |||
| 13339 | ||||
| 13340 | void MPM93_H2O_continuum (MatrixView pxsec, | |||
| 13341 | const Numeric fcenter, | |||
| 13342 | const Numeric b1, | |||
| 13343 | const Numeric b2, | |||
| 13344 | const Numeric b3, | |||
| 13345 | const Numeric b4, | |||
| 13346 | const Numeric b5, | |||
| 13347 | const Numeric b6, | |||
| 13348 | const String& model, | |||
| 13349 | ConstVectorView f_grid, | |||
| 13350 | ConstVectorView abs_p, | |||
| 13351 | ConstVectorView abs_t, | |||
| 13352 | ConstVectorView vmr, | |||
| 13353 | const Verbosity& verbosity) | |||
| 13354 | { | |||
| 13355 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 13356 | ||||
| 13357 | // --------- STANDARD MODEL PARAMETERS --------------------------------------------------- | |||
| 13358 | // standard values for the MPM93 H2O continuum model | |||
| 13359 | // (AGARD 52nd Specialists Meeting of the Electromagnetic Wave | |||
| 13360 | // Propagation Panel, Palma de Mallorca, Spain, 1993, May 17-21): | |||
| 13361 | const Numeric MPM93fo_orig = 1780.000e9; // [Hz] | |||
| 13362 | const Numeric MPM93b1_orig = 22300.000; // [Hz/Pa] | |||
| 13363 | const Numeric MPM93b2_orig = 0.952; // [1] | |||
| 13364 | const Numeric MPM93b3_orig = 17.600e4; // [Hz/Pa] | |||
| 13365 | const Numeric MPM93b4_orig = 30.500; // [1] | |||
| 13366 | const Numeric MPM93b5_orig = 2.000; // [1] | |||
| 13367 | const Numeric MPM93b6_orig = 5.000; // [1] | |||
| 13368 | // --------------------------------------------------------------------------------------- | |||
| 13369 | ||||
| 13370 | ||||
| 13371 | // select the parameter set (!!model goes for values!!): | |||
| 13372 | Numeric MPM93fopcl, MPM93b1pcl, MPM93b2pcl, | |||
| 13373 | MPM93b3pcl, MPM93b4pcl, MPM93b5pcl, | |||
| 13374 | MPM93b6pcl; | |||
| 13375 | if ( model == "MPM93" ) | |||
| 13376 | { | |||
| 13377 | MPM93fopcl = MPM93fo_orig; | |||
| 13378 | MPM93b1pcl = MPM93b1_orig; | |||
| 13379 | MPM93b2pcl = MPM93b2_orig; | |||
| 13380 | MPM93b3pcl = MPM93b3_orig; | |||
| 13381 | MPM93b4pcl = MPM93b4_orig; | |||
| 13382 | MPM93b5pcl = MPM93b5_orig; | |||
| 13383 | MPM93b6pcl = MPM93b6_orig; | |||
| 13384 | } | |||
| 13385 | else if ( model == "user" ) | |||
| 13386 | { | |||
| 13387 | MPM93fopcl = fcenter; | |||
| 13388 | MPM93b1pcl = b1; | |||
| 13389 | MPM93b2pcl = b2; | |||
| 13390 | MPM93b3pcl = b3; | |||
| 13391 | MPM93b4pcl = b4; | |||
| 13392 | MPM93b5pcl = b5; | |||
| 13393 | MPM93b6pcl = b6; | |||
| 13394 | } | |||
| 13395 | else | |||
| 13396 | { | |||
| 13397 | ostringstream os; | |||
| 13398 | os << "H2O-ContMPM93: ERROR! Wrong model values given.\n" | |||
| 13399 | << "allowed models are: 'MPM93', 'user'" << '\n'; | |||
| 13400 | throw runtime_error(os.str()); | |||
| 13401 | } | |||
| 13402 | out3 << "H2O-ContMPM93: (model=" << model << ") parameter values in use:\n" | |||
| 13403 | << " fo = " << MPM93fopcl << "\n" | |||
| 13404 | << " b1 = " << MPM93b1pcl << "\n" | |||
| 13405 | << " b2 = " << MPM93b2pcl << "\n" | |||
| 13406 | << " b3 = " << MPM93b3pcl << "\n" | |||
| 13407 | << " b4 = " << MPM93b4pcl << "\n" | |||
| 13408 | << " b5 = " << MPM93b5pcl << "\n" | |||
| 13409 | << " b6 = " << MPM93b6pcl << "\n"; | |||
| 13410 | ||||
| 13411 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 13412 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 13413 | ||||
| 13414 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 13415 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 13415 , "n_p==abs_t.nelem()") : (void)0); | |||
| 13416 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 13416 , "n_p==vmr.nelem()") : (void)0); | |||
| 13417 | ||||
| 13418 | // Check that dimensions of pxsec are consistent with n_f | |||
| 13419 | // and n_p. It should be [n_f,n_p]: | |||
| 13420 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 13420 , "n_f==pxsec.nrows()") : (void)0); | |||
| 13421 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 13421 , "n_p==pxsec.ncols()") : (void)0); | |||
| 13422 | ||||
| 13423 | ||||
| 13424 | // Loop pressure/temperature: | |||
| 13425 | for ( Index i=0; i<n_p; ++i ) | |||
| 13426 | { | |||
| 13427 | Numeric th = 300.0 / abs_t[i]; | |||
| 13428 | // the vmr of H2O will be multiplied at the stage of absorption calculation: | |||
| 13429 | // abs / vmr * pxsec. | |||
| 13430 | Numeric strength = MPM93b1pcl * abs_p[i] * pow( th, (Numeric)3.5 ) | |||
| 13431 | * exp(MPM93b2pcl * (1 - th)); | |||
| 13432 | Numeric gam = MPM93b3pcl * 0.001 * | |||
| 13433 | ( MPM93b4pcl * abs_p[i] * vmr[i] * pow( th, MPM93b6pcl ) + | |||
| 13434 | abs_p[i]*(1.000-vmr[i]) * pow( th, MPM93b5pcl ) ); | |||
| 13435 | // Loop frequency: | |||
| 13436 | for ( Index s=0; s<n_f; ++s ) | |||
| 13437 | { | |||
| 13438 | // pxsec = abs/vmr [1/m] but MPM89 is in [dB/km] --> conversion necessary | |||
| 13439 | pxsec(s,i) += dB_km_to_1_m * 0.1820 * | |||
| 13440 | f_grid[s] * strength * | |||
| 13441 | MPMLineShapeFunction(gam, MPM93fopcl, f_grid[s]); | |||
| 13442 | } | |||
| 13443 | } | |||
| 13444 | return; | |||
| 13445 | } | |||
| 13446 | // | |||
| 13447 | // ################################################################################# | |||
| 13448 | // ################################# OXYGEN MODELS ################################# | |||
| 13449 | // ################################################################################# | |||
| 13450 | //! MPM85O2AbsModel | |||
| 13451 | /*! | |||
| 13452 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 13453 | O2 according to MPM89 [1/m] | |||
| 13454 | \param CCin scaling factor for the O2-continuum [1] | |||
| 13455 | \param CLin scaling factor for the O2-line strengths [1] | |||
| 13456 | \param CWin scaling factor for the O2-line widths [1] | |||
| 13457 | \param COin scaling factor for the O2-line coupling [1] | |||
| 13458 | \param model allows user defined input parameter set | |||
| 13459 | (CCin, CLin, CWin, and COin)<br> or choice of | |||
| 13460 | pre-defined parameters of specific models (see note below). | |||
| 13461 | \param f_grid predefined frequency grid [Hz] | |||
| 13462 | \param abs_p predefined pressure [Pa] | |||
| 13463 | \param abs_t predefined temperature grid [K] | |||
| 13464 | \param abs_h2o H2O volume mixing ratio profile [1] | |||
| 13465 | \param vmr O2 volume mixing ratio profile [1] | |||
| 13466 | ||||
| 13467 | \note Except for model 'user' the input parameters CCin, CLin, CWin, and COin | |||
| 13468 | are neglected (model dominates over parameters).<br> | |||
| 13469 | Allowed models: 'MPM85', 'MPM85Lines', 'MPM85Continuum', 'MPM85NoCoupling', | |||
| 13470 | 'MPM85NoCutoff', and 'user'. See the user guide for detailed explanations. | |||
| 13471 | ||||
| 13472 | \remark Reference: H. J. Liebe,<br> | |||
| 13473 | <i>An updated model for millimeter wave propagation in moist air,</i>,<br> | |||
| 13474 | Radio Science, vol. 20, pp. 1069-1089, 1985 | |||
| 13475 | \author Thomas Kuhn | |||
| 13476 | \date 2002-04-05 | |||
| 13477 | */ | |||
| 13478 | ||||
| 13479 | void MPM85O2AbsModel (MatrixView pxsec, | |||
| 13480 | const Numeric CCin, // continuum scale factor | |||
| 13481 | const Numeric CLin, // line strength scale factor | |||
| 13482 | const Numeric CWin, // line broadening scale factor | |||
| 13483 | const Numeric COin, // line coupling scale factor | |||
| 13484 | const String& model, | |||
| 13485 | ConstVectorView f_grid, | |||
| 13486 | ConstVectorView abs_p, | |||
| 13487 | ConstVectorView abs_t, | |||
| 13488 | ConstVectorView abs_h2o, | |||
| 13489 | ConstVectorView vmr, | |||
| 13490 | const Verbosity& verbosity) | |||
| 13491 | { | |||
| 13492 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 13493 | ||||
| 13494 | // | |||
| 13495 | // Coefficients are from Liebe et al., AGARD CP-May93, Paper 3/1-10 | |||
| 13496 | // 0 1 2 3 4 5 6 | |||
| 13497 | // f0 a1 a2 a3 a4 a5 a6 | |||
| 13498 | // [GHz] [kHz/hPa] [1] [MHz/hPa] [1] [1/kPa] [1] | |||
| 13499 | const Numeric mpm85[48][7] = { | |||
| 13500 | { 49.452379 , 0.12 , 11.830 , 8.40 , 0.0 , 5.600 , 1.700 }, | |||
| 13501 | { 49.962257 , 0.34 , 10.720 , 8.50 , 0.0 , 5.600 , 1.700 }, | |||
| 13502 | { 50.474238 , 0.94 , 9.690 , 8.60 , 0.0 , 5.600 , 1.700 }, | |||
| 13503 | { 50.987748 , 2.46 , 8.690 , 8.70 , 0.0 , 5.500 , 1.700 }, | |||
| 13504 | { 51.503350 , 6.08 , 7.740 , 8.90 , 0.0 , 5.600 , 1.800 }, | |||
| 13505 | { 52.021409 , 14.14 , 6.840 , 9.20 , 0.0 , 5.500 , 1.800 }, | |||
| 13506 | { 52.542393 , 31.02 , 6.000 , 9.40 , 0.0 , 5.700 , 1.800 }, | |||
| 13507 | { 53.066906 , 64.10 , 5.220 , 9.70 , 0.0 , 5.300 , 1.900 }, | |||
| 13508 | { 53.595748 , 124.70 , 4.480 , 10.00 , 0.0 , 5.400 , 1.800 }, | |||
| 13509 | { 54.129999 , 228.00 , 3.810 , 10.20 , 0.0 , 4.800 , 2.000 }, | |||
| 13510 | { 54.671157 , 391.80 , 3.190 , 10.50 , 0.0 , 4.800 , 1.900 }, | |||
| 13511 | { 55.221365 , 631.60 , 2.620 , 10.79 , 0.0 , 4.170 , 2.100 }, | |||
| 13512 | { 55.783800 , 953.50 , 2.115 , 11.10 , 0.0 , 3.750 , 2.100 }, | |||
| 13513 | { 56.264777 , 548.90 , 0.010 , 16.46 , 0.0 , 7.740 , 0.900 }, | |||
| 13514 | { 56.363387 , 1344.00 , 1.655 , 11.44 , 0.0 , 2.970 , 2.300 }, | |||
| 13515 | { 56.968180 , 1763.00 , 1.255 , 11.81 , 0.0 , 2.120 , 2.500 }, | |||
| 13516 | { 57.612481 , 2141.00 , 0.910 , 12.21 , 0.0 , 0.940 , 3.700 }, | |||
| 13517 | { 58.323874 , 2386.00 , 0.621 , 12.66 , 0.0 , -0.550 , -3.100 }, | |||
| 13518 | { 58.446589 , 1457.00 , 0.079 , 14.49 , 0.0 , 5.970 , 0.800 }, | |||
| 13519 | { 59.164204 , 2404.00 , 0.386 , 13.19 , 0.0 , -2.440 , 0.100 }, | |||
| 13520 | { 59.590982 , 2112.00 , 0.207 , 13.60 , 0.0 , 3.440 , 0.500 }, | |||
| 13521 | { 60.306057 , 2124.00 , 0.207 , 13.82 , 0.0 , -4.130 , 0.700 }, | |||
| 13522 | { 60.434775 , 2461.00 , 0.386 , 12.97 , 0.0 , 1.320 , -1.000 }, | |||
| 13523 | { 61.150558 , 2504.00 , 0.621 , 12.48 , 0.0 , -0.360 , 5.800 }, | |||
| 13524 | { 61.800152 , 2298.00 , 0.910 , 12.07 , 0.0 , -1.590 , 2.900 }, | |||
| 13525 | { 62.411212 , 1933.00 , 1.255 , 11.71 , 0.0 , -2.660 , 2.300 }, | |||
| 13526 | { 62.486253 , 1517.00 , 0.078 , 14.68 , 0.0 , -4.770 , 0.900 }, | |||
| 13527 | { 62.997974 , 1503.00 , 1.660 , 11.39 , 0.0 , -3.340 , 2.200 }, | |||
| 13528 | { 63.568515 , 1087.00 , 2.110 , 11.08 , 0.0 , -4.170 , 2.000 }, | |||
| 13529 | { 64.127764 , 733.50 , 2.620 , 10.78 , 0.0 , -4.480 , 2.000 }, | |||
| 13530 | { 64.678900 , 463.50 , 3.190 , 10.50 , 0.0 , -5.100 , 1.800 }, | |||
| 13531 | { 65.224067 , 274.80 , 3.810 , 10.20 , 0.0 , -5.100 , 1.900 }, | |||
| 13532 | { 65.764769 , 153.00 , 4.480 , 10.00 , 0.0 , -5.700 , 1.800 }, | |||
| 13533 | { 66.302088 , 80.09 , 5.220 , 9.70 , 0.0 , -5.500 , 1.800 }, | |||
| 13534 | { 66.836827 , 39.46 , 6.000 , 9.40 , 0.0 , -5.900 , 1.700 }, | |||
| 13535 | { 67.369595 , 18.32 , 6.840 , 9.20 , 0.0 , -5.600 , 1.800 }, | |||
| 13536 | { 67.900862 , 8.01 , 7.740 , 8.90 , 0.0 , -5.800 , 1.700 }, | |||
| 13537 | { 68.431001 , 3.30 , 8.690 , 8.70 , 0.0 , -5.700 , 1.700 }, | |||
| 13538 | { 68.960306 , 1.28 , 9.690 , 8.60 , 0.0 , -5.600 , 1.700 }, | |||
| 13539 | { 69.489021 , 0.47 , 10.720 , 8.50 , 0.0 , -5.600 , 1.700 }, | |||
| 13540 | { 70.017342 , 0.16 , 11.830 , 8.40 , 0.0 , -5.600 , 1.700 }, | |||
| 13541 | { 118.750341 , 945.00 , 0.000 , 15.92 , 0.0 , -0.440 , 0.900 }, | |||
| 13542 | { 368.498350 , 67.90 , 0.020 , 19.20 , 0.6 , 0.000 , 0.000 }, | |||
| 13543 | { 424.763120 , 638.00 , 0.011 , 19.16 , 0.6 , 0.000 , 0.000 }, | |||
| 13544 | { 487.249370 , 235.00 , 0.011 , 19.20 , 0.6 , 0.000 , 0.000 }, | |||
| 13545 | { 715.393150 , 99.60 , 0.089 , 18.10 , 0.6 , 0.000 , 0.000 }, | |||
| 13546 | { 773.838730 , 671.00 , 0.079 , 18.10 , 0.6 , 0.000 , 0.000 }, | |||
| 13547 | { 834.145330 , 180.00 , 0.079 , 18.10 , 0.6 , 0.000 , 0.000 }, | |||
| 13548 | }; | |||
| 13549 | ||||
| 13550 | // number of lines of Liebe O2-line catalog (0-47 lines) | |||
| 13551 | const Index i_first = 0; | |||
| 13552 | const Index i_last = 47; // all the spec. lines up to 1THz | |||
| 13553 | // const Index i_last = 40; // only the 60GHz complex + 118GHz line | |||
| 13554 | ||||
| 13555 | ||||
| 13556 | // --------- STANDARD MODEL PARAMETERS --------------------------------------------------- | |||
| 13557 | // standard values for the MPM85 model (Liebe, Radio Science, 20, 1069-1089, 1985): | |||
| 13558 | const Numeric CC_MPM85 = 1.00000; | |||
| 13559 | const Numeric CL_MPM85 = 1.00000; | |||
| 13560 | const Numeric CW_MPM85 = 1.00000; | |||
| 13561 | const Numeric CO_MPM85 = 1.00000; | |||
| 13562 | int AppCutoff = 0; | |||
| 13563 | // --------------------------------------------------------------------------------------- | |||
| 13564 | ||||
| 13565 | ||||
| 13566 | // select the parameter set (!!model dominates values!!): | |||
| 13567 | Numeric CC, CL, CW, CO; | |||
| 13568 | if ( model == "MPM85" ) | |||
| 13569 | { | |||
| 13570 | CC = CC_MPM85; | |||
| 13571 | CL = CL_MPM85; | |||
| 13572 | CW = CW_MPM85; | |||
| 13573 | CO = CO_MPM85; | |||
| 13574 | } | |||
| 13575 | else if ( model == "MPM85Lines" ) | |||
| 13576 | { | |||
| 13577 | CC = 0.000; | |||
| 13578 | CL = CL_MPM85; | |||
| 13579 | CW = CW_MPM85; | |||
| 13580 | CO = CO_MPM85; | |||
| 13581 | } | |||
| 13582 | else if ( model == "MPM85Continuum" ) | |||
| 13583 | { | |||
| 13584 | CC = CC_MPM85; | |||
| 13585 | CL = 0.000; | |||
| 13586 | CW = 0.000; | |||
| 13587 | CO = 0.000; | |||
| 13588 | } | |||
| 13589 | else if ( model == "MPM85NoCoupling" ) | |||
| 13590 | { | |||
| 13591 | CC = CC_MPM85; | |||
| 13592 | CL = CL_MPM85; | |||
| 13593 | CW = CW_MPM85; | |||
| 13594 | CO = 0.000; | |||
| 13595 | } | |||
| 13596 | else if ( model == "MPM85NoCutoff" ) | |||
| 13597 | { | |||
| 13598 | CC = CC_MPM85; | |||
| 13599 | CL = CL_MPM85; | |||
| 13600 | CW = CW_MPM85; | |||
| 13601 | CO = CO_MPM85; | |||
| 13602 | AppCutoff = 1; | |||
| 13603 | } | |||
| 13604 | else if ( model == "user" ) | |||
| 13605 | { | |||
| 13606 | CC = CCin; | |||
| 13607 | CL = CLin; | |||
| 13608 | CW = CWin; | |||
| 13609 | CO = COin; | |||
| 13610 | } | |||
| 13611 | else | |||
| 13612 | { | |||
| 13613 | ostringstream os; | |||
| 13614 | os << "O2-MPM85: ERROR! Wrong model values given.\n" | |||
| 13615 | << "Valid models are: 'MPM85' 'MPM85Lines' 'MPM85Continuum' 'MPM85NoCoupling' 'MPM85NoCutoff'" | |||
| 13616 | << "and 'user'" << '\n'; | |||
| 13617 | throw runtime_error(os.str()); | |||
| 13618 | } | |||
| 13619 | out3 << "O2-MPM85: (model=" << model << ") parameter values in use:\n" | |||
| 13620 | << " CC = " << CC << "\n" | |||
| 13621 | << " CL = " << CL << "\n" | |||
| 13622 | << " CW = " << CW << "\n" | |||
| 13623 | << " CO = " << CO << "\n"; | |||
| 13624 | ||||
| 13625 | ||||
| 13626 | // O2 continuum parameters of MPM92: | |||
| 13627 | const Numeric S0 = 6.140e-4; // line strength [ppm] | |||
| 13628 | const Numeric G0 = 5.600e-3; // line width [GHz/kPa] | |||
| 13629 | const Numeric X0 = 0.800; // temperature dependence of line width [1] | |||
| 13630 | ||||
| 13631 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 13632 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 13633 | ||||
| 13634 | // const = VMR * ISORATIO = 0.20946 * 0.99519 | |||
| 13635 | // this constant is already incorporated into the line strength, so we | |||
| 13636 | // have top devide the line strength by this value since arts multiplies pxsec | |||
| 13637 | // by these variables later in abs_coefCalc. | |||
| 13638 | const Numeric VMRISO = 0.2085; | |||
| 13639 | ||||
| 13640 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 13641 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 13641 , "n_p==abs_t.nelem()") : (void)0); | |||
| 13642 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 13642 , "n_p==vmr.nelem()") : (void)0); | |||
| 13643 | ||||
| 13644 | // Check that dimensions of pxsec are consistent with n_f | |||
| 13645 | // and n_p. It should be [n_f,n_p]: | |||
| 13646 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 13646 , "n_f==pxsec.nrows()") : (void)0); | |||
| 13647 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 13647 , "n_p==pxsec.ncols()") : (void)0); | |||
| 13648 | ||||
| 13649 | // Loop pressure/temperature (pressure in hPa therefore the factor 0.01) | |||
| 13650 | for ( Index i=0; i<n_p; ++i ) | |||
| 13651 | { | |||
| 13652 | // check if O2-VMR is exactly zero (caused by zeropadding), then return 0. | |||
| 13653 | if (vmr[i] == 0.) | |||
| 13654 | { | |||
| 13655 | pxsec(joker, i) = 0.; | |||
| 13656 | continue; | |||
| 13657 | } | |||
| 13658 | ||||
| 13659 | // check if O2-VMR will cause an underflow due to division by zero: | |||
| 13660 | if (vmr[i] < VMRCalcLimit) | |||
| 13661 | { | |||
| 13662 | ostringstream os; | |||
| 13663 | os << "ERROR: MPM87 O2 full absorption model has detected a O2 volume mixing ratio of " | |||
| 13664 | << vmr[i] << " which is below the threshold of " << VMRCalcLimit << ".\n" | |||
| 13665 | << "Therefore no calculation is performed.\n"; | |||
| 13666 | throw runtime_error(os.str()); | |||
| 13667 | return; | |||
| 13668 | } | |||
| 13669 | ||||
| 13670 | // relative inverse temperature [1] | |||
| 13671 | Numeric theta = (300.0 / abs_t[i]); | |||
| 13672 | // H2O partial pressure [kPa] | |||
| 13673 | Numeric pwv = Pa_to_kPa * abs_p[i] * abs_h2o[i]; | |||
| 13674 | // dry air partial pressure [kPa] | |||
| 13675 | Numeric pda = (Pa_to_kPa * abs_p[i]) - pwv; | |||
| 13676 | // here the total pressure is devided by the O2 vmr for the | |||
| 13677 | // P_dry calculation because we calculate pxsec and not abs: abs = vmr * pxsec | |||
| 13678 | Numeric pda_dummy = pda; | |||
| 13679 | // O2 continuum strength [ppm] | |||
| 13680 | Numeric strength_cont = S0 * pda_dummy * pow( theta, (Numeric)2. ); | |||
| 13681 | // O2 continuum pseudo line broadening [GHz] | |||
| 13682 | Numeric gam_cont = G0 * ( pda + 1.10*pwv ) * pow( theta, X0 ); // GHz | |||
| 13683 | ||||
| 13684 | // Loop over input frequency | |||
| 13685 | for ( Index s=0; s<n_f; ++s ) | |||
| 13686 | { | |||
| 13687 | // input frequency in [GHz] | |||
| 13688 | Numeric ff = f_grid[s] * Hz_to_GHz; | |||
| 13689 | // O2 continuum absorption [1/m] | |||
| 13690 | // cross section: pxsec = absorption / var | |||
| 13691 | // the vmr of O2 will be multiplied at the stage of absorption calculation: | |||
| 13692 | // here the rolloff parameter FAC is implemented! | |||
| 13693 | // Numeric FAC = 1.000 / ( pow( ff, 2) + pow( 60.000, 2) ); | |||
| 13694 | // if we let the non-proofen rollofff away as in further version: | |||
| 13695 | Numeric FAC = 1.000 ; | |||
| 13696 | Numeric Nppc = CC * strength_cont * FAC * ff * gam_cont / | |||
| 13697 | ( pow( ff, (Numeric)2.) | |||
| 13698 | + pow( gam_cont, (Numeric)2.) ); | |||
| 13699 | ||||
| 13700 | // Loop over MPM85 O2 spectral lines: | |||
| 13701 | Numeric Nppl = 0.0; | |||
| 13702 | for ( Index l = i_first; l <= i_last; ++l ) | |||
| 13703 | { | |||
| 13704 | // line strength [ppm] S=A(1,I)*P*V**3*EXP(A(2,I)*(1.-V))*1.E-6 | |||
| 13705 | Numeric strength = CL * mpm85[l][1] * 1.000e-6 * pda_dummy * | |||
| 13706 | pow(theta, (Numeric)3.) * exp(mpm85[l][2]*(1.000-theta)) / | |||
| 13707 | mpm85[l][0]; | |||
| 13708 | // line broadening parameter [GHz] | |||
| 13709 | Numeric gam = CW * ( mpm85[l][3] * 1.000e-3 * | |||
| 13710 | ( ( pda * pow(theta, ((Numeric)0.80-mpm85[l][4]))) + | |||
| 13711 | (1.10 * pwv * theta) ) ); | |||
| 13712 | // line mixing parameter [1] | |||
| 13713 | Numeric delta = CO * mpm85[l][5] * 1.000e-3 * | |||
| 13714 | pda * pow(theta, mpm85[l][6]); | |||
| 13715 | // absorption [dB/km] like in the original MPM92 | |||
| 13716 | Nppl += strength * MPMLineShapeO2Function(gam, mpm85[l][0], ff, delta); | |||
| 13717 | } | |||
| 13718 | // in MPM85 there is a cutoff for O2 line absorption if abs_l < 0 | |||
| 13719 | // absorption cannot be less than 0 according to MPM87 philosophy. | |||
| 13720 | // since this cutoff is only 'detectable' in the source code and not in the | |||
| 13721 | // publications we assume this cutoff also for MPM85 since it is also | |||
| 13722 | // implemented in MPM87. | |||
| 13723 | if (AppCutoff == 0) | |||
| 13724 | { | |||
| 13725 | if (Nppl < 0.000) Nppl = 0.0000; | |||
| 13726 | } | |||
| 13727 | // | |||
| 13728 | // O2 line absorption [1/m] | |||
| 13729 | // cross section: pxsec = absorption / var | |||
| 13730 | // the vmr of O2 will be multiplied at the stage of absorption calculation: | |||
| 13731 | pxsec(s,i) += dB_km_to_1_m * 0.1820 * ff * (Nppl+Nppc) / VMRISO; | |||
| 13732 | } | |||
| 13733 | } | |||
| 13734 | return; | |||
| 13735 | } | |||
| 13736 | // | |||
| 13737 | // ################################################################################# | |||
| 13738 | //! MPM87O2AbsModel | |||
| 13739 | /*! | |||
| 13740 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 13741 | O2 according to MPM89 [1/m] | |||
| 13742 | \param CCin scaling factor for the O2-continuum [1] | |||
| 13743 | \param CLin scaling factor for the O2-line strengths [1] | |||
| 13744 | \param CWin scaling factor for the O2-line widths [1] | |||
| 13745 | \param COin scaling factor for the O2-line coupling [1] | |||
| 13746 | \param model allows user defined input parameter set | |||
| 13747 | (CCin, CLin, CWin, and COin)<br> or choice of | |||
| 13748 | pre-defined parameters of specific models (see note below). | |||
| 13749 | \param f_grid predefined frequency grid [Hz] | |||
| 13750 | \param abs_p predefined pressure [Pa] | |||
| 13751 | \param abs_t predefined temperature grid [K] | |||
| 13752 | \param abs_h2o H2O volume mixing ratio profile [1] | |||
| 13753 | \param vmr O2 volume mixing ratio profile [1] | |||
| 13754 | ||||
| 13755 | \note Except for model 'user' the input parameters CCin, CLin, CWin, and COin | |||
| 13756 | are neglected (model dominates over parameters).<br> | |||
| 13757 | Allowed models: 'MPM87', 'MPM87Lines', 'MPM87Continuum', 'MPM87NoCoupling', | |||
| 13758 | 'MPM87NoCutoff', and 'user'. See the user guide for detailed explanations. | |||
| 13759 | ||||
| 13760 | \remark Reference: H. J. Liebe and D. H. Layton,<br> | |||
| 13761 | <i>Millimeter-wave properties of the atmosphere: | |||
| 13762 | Laboratory studies and propagation modelling</i>,<br> | |||
| 13763 | U.S. Dept. of Commerce, National Telecommunications and Information | |||
| 13764 | Administration, Institute for Communication Sciences, rep. 87-224,<br> | |||
| 13765 | 325 Broadway, Boulder, CO 80303-3328 | |||
| 13766 | ||||
| 13767 | \author Thomas Kuhn | |||
| 13768 | \date 2002-04-05 | |||
| 13769 | */ | |||
| 13770 | ||||
| 13771 | void MPM87O2AbsModel (MatrixView pxsec, | |||
| 13772 | const Numeric CCin, // continuum scale factor | |||
| 13773 | const Numeric CLin, // line strength scale factor | |||
| 13774 | const Numeric CWin, // line broadening scale factor | |||
| 13775 | const Numeric COin, // line coupling scale factor | |||
| 13776 | const String& model, | |||
| 13777 | ConstVectorView f_grid, | |||
| 13778 | ConstVectorView abs_p, | |||
| 13779 | ConstVectorView abs_t, | |||
| 13780 | ConstVectorView abs_h2o, | |||
| 13781 | ConstVectorView vmr, | |||
| 13782 | const Verbosity& verbosity) | |||
| 13783 | { | |||
| 13784 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 13785 | ||||
| 13786 | // | |||
| 13787 | // Coefficients are from Liebe et al., AGARD CP-May93, Paper 3/1-10 | |||
| 13788 | // 0 1 2 3 4 5 6 | |||
| 13789 | // f0 a1 a2 a3 a4 a5 a6 | |||
| 13790 | // [GHz] [kHz/hPa] [1] [MHz/hPa] [1] [1/kPa] | |||
| 13791 | const Numeric mpm87[48][7] = { | |||
| 13792 | { 49.452379 , 0.12 , 11.830 , 8.40 , 0.0 , 6.600 , 1.700}, // 0 | |||
| 13793 | { 49.962257 , 0.34 , 10.720 , 8.50 , 0.0 , 6.600 , 1.700}, // 1 | |||
| 13794 | { 50.474238 , 0.94 , 9.690 , 8.60 , 0.0 , 6.600 , 1.700}, // 2 | |||
| 13795 | { 50.987748 , 2.46 , 8.690 , 8.70 , 0.0 , 6.500 , 1.700}, // 3 | |||
| 13796 | { 51.503350 , 6.08 , 7.740 , 8.90 , 0.0 , 6.627 , 1.800}, // 4 | |||
| 13797 | { 52.021409 , 14.14 , 6.840 , 9.20 , 0.0 , 6.347 , 1.800}, // 5 | |||
| 13798 | { 52.542393 , 31.02 , 6.000 , 9.40 , 0.0 , 6.046 , 1.800}, // 6 | |||
| 13799 | { 53.066906 , 64.10 , 5.220 , 9.70 , 0.0 , 5.719 , 1.900}, // 7 | |||
| 13800 | { 53.595748 , 124.70 , 4.480 , 10.00 , 0.0 , 5.400 , 1.800}, // 8 | |||
| 13801 | { 54.129999 , 228.00 , 3.810 , 10.20 , 0.0 , 5.157 , 2.000}, // 9 | |||
| 13802 | { 54.671157 , 391.80 , 3.190 , 10.50 , 0.0 , 4.783 , 1.900}, // 10 | |||
| 13803 | { 55.221365 , 631.60 , 2.620 , 10.79 , 0.0 , 4.339 , 2.100}, // 11 | |||
| 13804 | { 55.783800 , 953.50 , 2.115 , 11.10 , 0.0 , 4.011 , 2.100}, // 12 | |||
| 13805 | { 56.264777 , 548.90 , 0.010 , 16.46 , 0.0 , 2.772 , 0.900}, // 13 | |||
| 13806 | { 56.363387 , 1344.00 , 1.655 , 11.44 , 0.0 , 3.922 , 2.300}, // 14 | |||
| 13807 | { 56.968180 , 1763.00 , 1.255 , 11.81 , 0.0 , 3.398 , 2.500}, // 15 | |||
| 13808 | { 57.612481 , 2141.00 , 0.910 , 12.21 , 0.0 , 1.145 , 3.200}, // 16 | |||
| 13809 | { 58.323874 , 2386.00 , 0.621 , 12.66 , 0.0 , -0.317 , -2.500}, // 17 | |||
| 13810 | { 58.446589 , 1457.00 , 0.079 , 14.49 , 0.0 , 6.270 , 0.800}, // 18 | |||
| 13811 | { 59.164204 , 2404.00 , 0.386 , 13.19 , 0.0 , -4.119 , 0.100}, // 19 | |||
| 13812 | { 59.590982 , 2112.00 , 0.207 , 13.60 , 0.0 , 6.766 , 0.500}, // 20 | |||
| 13813 | { 60.306057 , 2124.00 , 0.207 , 13.82 , 0.0 , -6.183 , 0.700}, // 21 | |||
| 13814 | { 60.434775 , 2461.00 , 0.386 , 12.97 , 0.0 , 3.290 , -0.400}, // 22 | |||
| 13815 | { 61.150558 , 2504.00 , 0.621 , 12.48 , 0.0 , -1.591 , 3.500}, // 23 | |||
| 13816 | { 61.800152 , 2298.00 , 0.910 , 12.07 , 0.0 , -2.068 , 2.900}, // 24 | |||
| 13817 | { 62.411212 , 1933.00 , 1.255 , 11.71 , 0.0 , -4.158 , 2.300}, // 25 | |||
| 13818 | { 62.486253 , 1517.00 , 0.078 , 14.68 , 0.0 , -4.068 , 0.900}, // 26 | |||
| 13819 | { 62.997974 , 1503.00 , 1.660 , 11.39 , 0.0 , -4.482 , 2.200}, // 27 | |||
| 13820 | { 63.568515 , 1087.00 , 2.110 , 11.08 , 0.0 , -4.442 , 2.000}, // 28 | |||
| 13821 | { 64.127764 , 733.50 , 2.620 , 10.78 , 0.0 , -4.687 , 2.000}, // 29 | |||
| 13822 | { 64.678900 , 463.50 , 3.190 , 10.50 , 0.0 , -5.074 , 1.800}, // 30 | |||
| 13823 | { 65.224067 , 274.80 , 3.810 , 10.20 , 0.0 , -5.403 , 1.900}, // 31 | |||
| 13824 | { 65.764769 , 153.00 , 4.480 , 10.00 , 0.0 , -5.610 , 1.800}, // 32 | |||
| 13825 | { 66.302088 , 80.09 , 5.220 , 9.70 , 0.0 , -5.896 , 1.800}, // 33 | |||
| 13826 | { 66.836827 , 39.46 , 6.000 , 9.40 , 0.0 , -6.194 , 1.700}, // 34 | |||
| 13827 | { 67.369595 , 18.32 , 6.840 , 9.20 , 0.0 , -6.468 , 1.800}, // 35 | |||
| 13828 | { 67.900862 , 8.01 , 7.740 , 8.90 , 0.0 , -6.718 , 1.700}, // 36 | |||
| 13829 | { 68.431001 , 3.30 , 8.690 , 8.70 , 0.0 , -6.700 , 1.700}, // 37 | |||
| 13830 | { 68.960306 , 1.28 , 9.690 , 8.60 , 0.0 , -6.600 , 1.700}, // 38 | |||
| 13831 | { 69.489021 , 0.47 , 10.720 , 8.50 , 0.0 , -6.600 , 1.700}, // 39 | |||
| 13832 | { 70.017342 , 0.16 , 11.830 , 8.40 , 0.0 , -6.600 , 1.700}, // 40 | |||
| 13833 | { 118.750341 , 945.00 , 0.000 , 16.30 , 0.0 , -0.134 , 0.800}, // 41 | |||
| 13834 | { 368.498350 , 67.90 , 0.020 , 19.20 , 0.6 , 0.000 , 0.000}, // 42 | |||
| 13835 | { 424.763120 , 638.00 , 0.011 , 19.16 , 0.6 , 0.000 , 0.000}, // 43 | |||
| 13836 | { 487.249370 , 235.00 , 0.011 , 19.20 , 0.6 , 0.000 , 0.000}, // 44 | |||
| 13837 | { 715.393150 , 99.60 , 0.089 , 18.10 , 0.6 , 0.000 , 0.000}, // 45 | |||
| 13838 | { 773.838730 , 671.00 , 0.079 , 18.10 , 0.6 , 0.000 , 0.000}, // 46 | |||
| 13839 | { 834.145330 , 180.00 , 0.079 , 18.10 , 0.6 , 0.000 , 0.000} // 47 | |||
| 13840 | }; | |||
| 13841 | ||||
| 13842 | // number of lines of Liebe O2-line catalog (0-47 lines) | |||
| 13843 | const Index i_first = 0; | |||
| 13844 | const Index i_last = 47; // all the spec. lines up to 1THz | |||
| 13845 | // const Index i_last = 40; // only the 60GHz complex + 118GHz line | |||
| 13846 | ||||
| 13847 | ||||
| 13848 | // --------- STANDARD MODEL PARAMETERS --------------------------------------------------- | |||
| 13849 | // standard values for the MPM87 model (NITA Report 87-224): | |||
| 13850 | const Numeric CC_MPM87 = 1.00000; | |||
| 13851 | const Numeric CL_MPM87 = 1.00000; | |||
| 13852 | const Numeric CW_MPM87 = 1.00000; | |||
| 13853 | const Numeric CO_MPM87 = 1.00000; | |||
| 13854 | int AppCutoff = 0; | |||
| 13855 | // --------------------------------------------------------------------------------------- | |||
| 13856 | ||||
| 13857 | ||||
| 13858 | // select the parameter set (!!model dominates values!!): | |||
| 13859 | Numeric CC, CL, CW, CO; | |||
| 13860 | if ( model == "MPM87" ) | |||
| 13861 | { | |||
| 13862 | CC = CC_MPM87; | |||
| 13863 | CL = CL_MPM87; | |||
| 13864 | CW = CW_MPM87; | |||
| 13865 | CO = CO_MPM87; | |||
| 13866 | } | |||
| 13867 | else if ( model == "MPM87Lines" ) | |||
| 13868 | { | |||
| 13869 | CC = 0.000; | |||
| 13870 | CL = CL_MPM87; | |||
| 13871 | CW = CW_MPM87; | |||
| 13872 | CO = CO_MPM87; | |||
| 13873 | } | |||
| 13874 | else if ( model == "MPM87Continuum" ) | |||
| 13875 | { | |||
| 13876 | CC = CC_MPM87; | |||
| 13877 | CL = 0.000; | |||
| 13878 | CW = 0.000; | |||
| 13879 | CO = 0.000; | |||
| 13880 | } | |||
| 13881 | else if ( model == "MPM87NoCoupling" ) | |||
| 13882 | { | |||
| 13883 | CC = CC_MPM87; | |||
| 13884 | CL = CL_MPM87; | |||
| 13885 | CW = CW_MPM87; | |||
| 13886 | CO = 0.000; | |||
| 13887 | } | |||
| 13888 | else if ( model == "MPM87NoCutoff" ) | |||
| 13889 | { | |||
| 13890 | // !!ATTENTION!! | |||
| 13891 | // In the window regions the total absorption can get negative values. | |||
| 13892 | // So be carefull with this selection! | |||
| 13893 | CC = CC_MPM87; | |||
| 13894 | CL = CL_MPM87; | |||
| 13895 | CW = CW_MPM87; | |||
| 13896 | CO = CO_MPM87; | |||
| 13897 | AppCutoff = 1; | |||
| 13898 | } | |||
| 13899 | else if ( model == "user" ) | |||
| 13900 | { | |||
| 13901 | CC = CCin; | |||
| 13902 | CL = CLin; | |||
| 13903 | CW = CWin; | |||
| 13904 | CO = COin; | |||
| 13905 | } | |||
| 13906 | else | |||
| 13907 | { | |||
| 13908 | ostringstream os; | |||
| 13909 | os << "O2-MPM87: ERROR! Wrong model values given.\n" | |||
| 13910 | << "Valid models are: 'MPM87' 'MPM87Lines' 'MPM87Continuum' 'MPM87NoCoupling' 'MPM87NoCutoff'" | |||
| 13911 | << "and 'user'" << '\n'; | |||
| 13912 | throw runtime_error(os.str()); | |||
| 13913 | } | |||
| 13914 | out3 << "O2-MPM87: (model=" << model << ") parameter values in use:\n" | |||
| 13915 | << " CC = " << CC << "\n" | |||
| 13916 | << " CL = " << CL << "\n" | |||
| 13917 | << " CW = " << CW << "\n" | |||
| 13918 | << " CO = " << CO << "\n"; | |||
| 13919 | ||||
| 13920 | ||||
| 13921 | // O2 continuum parameters of MPM92: | |||
| 13922 | const Numeric S0 = 6.140e-4; // line strength [ppm] | |||
| 13923 | const Numeric G0 = 4.800e-3; // line width [GHz/kPa] !! 14% lower than in all the other versions !! | |||
| 13924 | const Numeric X0 = 0.800; // temperature dependence of line width [1] | |||
| 13925 | ||||
| 13926 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 13927 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 13928 | ||||
| 13929 | // const = VMR * ISORATIO = 0.20946 * 0.99519 | |||
| 13930 | // this constant is already incorporated into the line strength, so we | |||
| 13931 | // have top devide the line strength by this value since arts multiplies pxsec | |||
| 13932 | // by these variables later in abs_coefCalc. | |||
| 13933 | const Numeric VMRISO = 0.2085; | |||
| 13934 | ||||
| 13935 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 13936 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 13936 , "n_p==abs_t.nelem()") : (void)0); | |||
| 13937 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 13937 , "n_p==vmr.nelem()") : (void)0); | |||
| 13938 | ||||
| 13939 | // Check that dimensions of pxsec are consistent with n_f | |||
| 13940 | // and n_p. It should be [n_f,n_p]: | |||
| 13941 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 13941 , "n_f==pxsec.nrows()") : (void)0); | |||
| 13942 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 13942 , "n_p==pxsec.ncols()") : (void)0); | |||
| 13943 | ||||
| 13944 | // Loop pressure/temperature (pressure in hPa therefore the factor 0.01) | |||
| 13945 | for ( Index i=0; i<n_p; ++i ) | |||
| 13946 | { | |||
| 13947 | // check if O2-VMR is exactly zero (caused by zeropadding), then return 0. | |||
| 13948 | if (vmr[i] == 0.) | |||
| 13949 | { | |||
| 13950 | pxsec(joker, i) = 0.; | |||
| 13951 | continue; | |||
| 13952 | } | |||
| 13953 | ||||
| 13954 | // check if O2-VMR will cause an underflow due to division by zero: | |||
| 13955 | if (vmr[i] < VMRCalcLimit) | |||
| 13956 | { | |||
| 13957 | ostringstream os; | |||
| 13958 | os << "ERROR: MPM87 O2 full absorption model has detected a O2 volume mixing ratio of " | |||
| 13959 | << vmr[i] << " which is below the threshold of " << VMRCalcLimit << ".\n" | |||
| 13960 | << "Therefore no calculation is performed.\n"; | |||
| 13961 | throw runtime_error(os.str()); | |||
| 13962 | return; | |||
| 13963 | } | |||
| 13964 | ||||
| 13965 | // relative inverse temperature [1] | |||
| 13966 | Numeric theta = (300.0 / abs_t[i]); | |||
| 13967 | // H2O partial pressure [kPa] | |||
| 13968 | Numeric pwv = Pa_to_kPa * abs_p[i] * abs_h2o[i]; | |||
| 13969 | // dry air partial pressure [kPa] | |||
| 13970 | Numeric pda = (Pa_to_kPa * abs_p[i]) - pwv; | |||
| 13971 | // here the total pressure is devided by the O2 vmr for the | |||
| 13972 | // P_dry calculation because we calculate pxsec and not abs: abs = vmr * pxsec | |||
| 13973 | Numeric pda_dummy = pda; | |||
| 13974 | // O2 continuum strength [ppm] | |||
| 13975 | Numeric strength_cont = S0 * pda_dummy * pow( theta, (Numeric)2. ); | |||
| 13976 | // O2 continuum pseudo line broadening [GHz] | |||
| 13977 | Numeric gam_cont = G0 * ( pda + 1.10*pwv ) * pow( theta, X0 ); // GHz | |||
| 13978 | ||||
| 13979 | // Loop over input frequency | |||
| 13980 | for ( Index s=0; s<n_f; ++s ) | |||
| 13981 | { | |||
| 13982 | // input frequency in [GHz] | |||
| 13983 | Numeric ff = f_grid[s] * Hz_to_GHz; | |||
| 13984 | // O2 continuum absorption [1/m] | |||
| 13985 | // cross section: pxsec = absorption / var | |||
| 13986 | // the vmr of O2 will be multiplied at the stage of absorption calculation: | |||
| 13987 | Numeric Nppc = CC * strength_cont * ff * gam_cont / | |||
| 13988 | ( pow( ff, (Numeric)2.) + pow( gam_cont, (Numeric)2.) ); | |||
| 13989 | ||||
| 13990 | // Loop over MPM87 O2 spectral lines: | |||
| 13991 | Numeric Nppl = 0.0; | |||
| 13992 | for ( Index l = i_first; l <= i_last; ++l ) | |||
| 13993 | { | |||
| 13994 | // line strength [ppm] S=A(1,I)*P*V**3*EXP(A(2,I)*(1.-V))*1.E-6 | |||
| 13995 | Numeric strength = CL * mpm87[l][1] * 1.000e-6 * pda_dummy * | |||
| 13996 | pow(theta, (Numeric)3.) * exp(mpm87[l][2]*(1.000-theta)) / | |||
| 13997 | mpm87[l][0]; | |||
| 13998 | // line broadening parameter [GHz] | |||
| 13999 | Numeric gam = CW * ( mpm87[l][3] * 1.000e-3 * | |||
| 14000 | ( ( pda * pow(theta, ((Numeric)0.80-mpm87[l][4]))) + | |||
| 14001 | (1.10 * pwv * theta) ) ); | |||
| 14002 | // line mixing parameter [1] | |||
| 14003 | Numeric delta = CO * mpm87[l][5] * 1.000e-3 * | |||
| 14004 | pda * pow(theta, mpm87[l][6]); | |||
| 14005 | // absorption [dB/km] like in the original MPM92 | |||
| 14006 | Nppl += strength * MPMLineShapeO2Function(gam, mpm87[l][0], ff, delta); | |||
| 14007 | } | |||
| 14008 | // in MPM87 there is a cutoff for O2 line absorption if abs_l < 0 | |||
| 14009 | // absorption cannot be less than 0 according to MPM87 source code. | |||
| 14010 | if (AppCutoff == 0) | |||
| 14011 | { | |||
| 14012 | if (Nppl < 0.000) Nppl = 0.0000; | |||
| 14013 | } | |||
| 14014 | // | |||
| 14015 | // O2 line absorption [1/m] | |||
| 14016 | // cross section: pxsec = absorption / var | |||
| 14017 | // the vmr of O2 will be multiplied at the stage of absorption calculation: | |||
| 14018 | pxsec(s,i) += dB_km_to_1_m * 0.1820 * ff * (Nppl+Nppc) / VMRISO; | |||
| 14019 | } | |||
| 14020 | } | |||
| 14021 | return; | |||
| 14022 | } | |||
| 14023 | // | |||
| 14024 | // ################################################################################# | |||
| 14025 | //! MPM89O2AbsModel | |||
| 14026 | /*! | |||
| 14027 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 14028 | O2 according to MPM89 [1/m] | |||
| 14029 | \param CCin scaling factor for the O2-continuum [1] | |||
| 14030 | \param CLin scaling factor for the O2-line strengths [1] | |||
| 14031 | \param CWin scaling factor for the O2-line widths [1] | |||
| 14032 | \param COin scaling factor for the O2-line coupling [1] | |||
| 14033 | \param model allows user defined input parameter set | |||
| 14034 | (CCin, CLin, CWin, and COin)<br> or choice of | |||
| 14035 | pre-defined parameters of specific models (see note below). | |||
| 14036 | \param f_grid predefined frequency grid [Hz] | |||
| 14037 | \param abs_p predefined pressure [Pa] | |||
| 14038 | \param abs_t predefined temperature grid [K] | |||
| 14039 | \param abs_h2o H2O volume mixing ratio profile [1] | |||
| 14040 | \param vmr O2 volume mixing ratio profile [1] | |||
| 14041 | ||||
| 14042 | \note Except for model 'user' the input parameters CCin, CLin, CWin, and COin | |||
| 14043 | are neglected (model dominates over parameters).<br> | |||
| 14044 | Allowed models: 'MPM89', 'MPM89Lines', 'MPM89Continuum', 'MPM89NoCoupling', | |||
| 14045 | 'MPM89NoCutoff', and 'user'. See the user guide for detailed explanations. | |||
| 14046 | ||||
| 14047 | \remark Reference: H. J. Liebe,<br> | |||
| 14048 | <i>MPM - an atmospheric millimeter-wave propagation model</i>,<br> | |||
| 14049 | Int. J. Infrared and Mill. Waves, Vol 10, pp. 631-650, 1989. | |||
| 14050 | ||||
| 14051 | \author Thomas Kuhn | |||
| 14052 | \date 2002-04-05 | |||
| 14053 | */ | |||
| 14054 | ||||
| 14055 | void MPM89O2AbsModel (MatrixView pxsec, | |||
| 14056 | const Numeric CCin, // continuum scale factor | |||
| 14057 | const Numeric CLin, // line strength scale factor | |||
| 14058 | const Numeric CWin, // line broadening scale factor | |||
| 14059 | const Numeric COin, // line coupling scale factor | |||
| 14060 | const String& model, | |||
| 14061 | ConstVectorView f_grid, | |||
| 14062 | ConstVectorView abs_p, | |||
| 14063 | ConstVectorView abs_t, | |||
| 14064 | ConstVectorView abs_h2o, | |||
| 14065 | ConstVectorView vmr, | |||
| 14066 | const Verbosity& verbosity) | |||
| 14067 | { | |||
| 14068 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 14069 | ||||
| 14070 | // | |||
| 14071 | // Coefficients are from Liebe et al., AGARD CP-May93, Paper 3/1-10 | |||
| 14072 | // 0 1 2 3 4 5 6 | |||
| 14073 | // f0 a1 a2 a3 a4 a5 a6 | |||
| 14074 | // [GHz] [kHz/hPa] [1] [MHz/hPa] [1] [1/kPa] | |||
| 14075 | const Numeric mpm89[44][7] = { | |||
| 14076 | { 50.474238, 0.94 , 9.694 , 8.60 , 0.0 , 1.600 , 5.520 }, // 0 | |||
| 14077 | { 50.987749, 2.46 , 8.694 , 8.70 , 0.0 , 1.400 , 5.520 }, // 1 | |||
| 14078 | { 51.503350, 6.08 , 7.744 , 8.90 , 0.0 , 1.165 , 5.520 }, // 2 | |||
| 14079 | { 52.021410, 14.14 , 6.844 , 9.20 , 0.0 , 0.883 , 5.520 }, // 3 | |||
| 14080 | { 52.542394, 31.02 , 6.004 , 9.40 , 0.0 , 0.579 , 5.520 }, // 4 | |||
| 14081 | { 53.066907, 64.10 , 5.224 , 9.70 , 0.0 , 0.252 , 5.520 }, // 5 | |||
| 14082 | { 53.595749, 124.70 , 4.484 , 10.00 , 0.0 , -0.066 , 5.520 }, // 6 | |||
| 14083 | { 54.130000, 228.00 , 3.814 , 10.20 , 0.0 , -0.314 , 5.520 }, // 7 | |||
| 14084 | { 54.671159, 391.80 , 3.194 , 10.50 , 0.0 , -0.706 , 5.520 }, // 8 | |||
| 14085 | { 55.221367, 631.60 , 2.624 , 10.79 , 0.0 , -1.151 , 5.514 }, // 9 | |||
| 14086 | { 55.783802, 953.50 , 2.119 , 11.10 , 0.0 , -0.920 , 5.025 }, // 10 | |||
| 14087 | { 56.264775, 548.90 , 0.015 , 16.46 , 0.0 , 2.881 , -0.069 }, // 11 | |||
| 14088 | { 56.363389, 1344.00 , 1.660 , 11.44 , 0.0 , -0.596 , 4.750 }, // 12 | |||
| 14089 | { 56.968206, 1763.00 , 1.260 , 11.81 , 0.0 , -0.556 , 4.104 }, // 13 | |||
| 14090 | { 57.612484, 2141.00 , 0.915 , 12.21 , 0.0 , -2.414 , 3.536 }, // 14 | |||
| 14091 | { 58.323877, 2386.00 , 0.626 , 12.66 , 0.0 , -2.635 , 2.686 }, // 15 | |||
| 14092 | { 58.446590, 1457.00 , 0.084 , 14.49 , 0.0 , 6.848 , -0.647 }, // 16 | |||
| 14093 | { 59.164207, 2404.00 , 0.391 , 13.19 , 0.0 , -6.032 , 1.858 }, // 17 | |||
| 14094 | { 59.590983, 2112.00 , 0.212 , 13.60 , 0.0 , 8.266 , -1.413 }, // 18 | |||
| 14095 | { 60.306061, 2124.00 , 0.212 , 13.82 , 0.0 , -7.170 , 0.916 }, // 19 | |||
| 14096 | { 60.434776, 2461.00 , 0.391 , 12.97 , 0.0 , 5.664 , -2.323 }, // 20 | |||
| 14097 | { 61.150560, 2504.00 , 0.626 , 12.48 , 0.0 , 1.731 , -3.039 }, // 21 | |||
| 14098 | { 61.800154, 2298.00 , 0.915 , 12.07 , 0.0 , 1.738 , -3.797 }, // 22 | |||
| 14099 | { 62.411215, 1933.00 , 1.260 , 11.71 , 0.0 , -0.048 , -4.277 }, // 23 | |||
| 14100 | { 62.486260, 1517.00 , 0.083 , 14.68 , 0.0 , -4.290 , 0.238 }, // 24 | |||
| 14101 | { 62.997977, 1503.00 , 1.665 , 11.39 , 0.0 , 0.134 , -4.860 }, // 25 | |||
| 14102 | { 63.568518, 1087.00 , 2.115 , 11.08 , 0.0 , 0.541 , -5.079 }, // 26 | |||
| 14103 | { 64.127767, 733.50 , 2.620 , 10.78 , 0.0 , 0.814 , -5.525 }, // 27 | |||
| 14104 | { 64.678903, 463.50 , 3.195 , 10.50 , 0.0 , 0.415 , -5.520 }, // 28 | |||
| 14105 | { 65.224071, 274.80 , 3.815 , 10.20 , 0.0 , 0.069 , -5.520 }, // 29 | |||
| 14106 | { 65.764772, 153.00 , 4.485 , 10.00 , 0.0 , -0.143 , -5.520 }, // 30 | |||
| 14107 | { 66.302091, 80.09 , 5.225 , 9.70 , 0.0 , -0.428 , -5.520 }, // 31 | |||
| 14108 | { 66.836830, 39.46 , 6.005 , 9.40 , 0.0 , -0.726 , -5.520 }, // 32 | |||
| 14109 | { 67.369598, 18.32 , 6.845 , 9.20 , 0.0 , -1.002 , -5.520 }, // 33 | |||
| 14110 | { 67.900867, 8.01 , 7.745 , 8.90 , 0.0 , -1.255 , -5.520 }, // 34 | |||
| 14111 | { 68.431005, 3.30 , 8.695 , 8.70 , 0.0 , -1.500 , -5.520 }, // 35 | |||
| 14112 | { 68.960311, 1.28 , 9.695 , 8.60 , 0.0 , -1.700 , -5.520 }, // 36 | |||
| 14113 | { 118.750343, 945.00 , 0.009 , 16.30 , 0.0 , -0.247 , 0.003 }, // 37 | |||
| 14114 | { 368.498350, 67.90 , 0.049 , 19.20 , 0.6 , 0.000 , 0.000 }, // 38 | |||
| 14115 | { 424.763124, 638.00 , 0.044 , 19.16 , 0.6 , 0.000 , 0.000 }, // 39 | |||
| 14116 | { 487.249370, 235.00 , 0.049 , 19.20 , 0.6 , 0.000 , 0.000 }, // 40 | |||
| 14117 | { 715.393150, 99.60 , 0.145 , 18.10 , 0.6 , 0.000 , 0.000 }, // 41 | |||
| 14118 | { 773.839675, 671.00 , 0.130 , 18.10 , 0.6 , 0.000 , 0.000 }, // 42 | |||
| 14119 | { 834.145330, 180.00 , 0.147 , 18.10 , 0.6 , 0.000 , 0.000 } // 43 | |||
| 14120 | }; | |||
| 14121 | ||||
| 14122 | // number of lines of Liebe O2-line catalog (0-43 lines) | |||
| 14123 | const Index i_first = 0; | |||
| 14124 | const Index i_last = 43; // all the spec. lines up to 1THz | |||
| 14125 | // const Index i_last = 37; // only the 60GHz complex + 118GHz line | |||
| 14126 | ||||
| 14127 | ||||
| 14128 | // --------- STANDARD MODEL PARAMETERS --------------------------------------------------- | |||
| 14129 | // standard values for the MPM89 model (IJIMW, Vol 10, pp. 631-650, 1989): | |||
| 14130 | const Numeric CC_MPM89 = 1.00000; | |||
| 14131 | const Numeric CL_MPM89 = 1.00000; | |||
| 14132 | const Numeric CW_MPM89 = 1.00000; | |||
| 14133 | const Numeric CO_MPM89 = 1.00000; | |||
| 14134 | int AppCutoff = 0; | |||
| 14135 | // --------------------------------------------------------------------------------------- | |||
| 14136 | ||||
| 14137 | ||||
| 14138 | // select the parameter set (!!model dominates values!!): | |||
| 14139 | Numeric CC, CL, CW, CO; | |||
| 14140 | if ( model == "MPM89" ) | |||
| 14141 | { | |||
| 14142 | CC = CC_MPM89; | |||
| 14143 | CL = CL_MPM89; | |||
| 14144 | CW = CW_MPM89; | |||
| 14145 | CO = CO_MPM89; | |||
| 14146 | } | |||
| 14147 | else if ( model == "MPM89Lines" ) | |||
| 14148 | { | |||
| 14149 | CC = 0.000; | |||
| 14150 | CL = CL_MPM89; | |||
| 14151 | CW = CW_MPM89; | |||
| 14152 | CO = CO_MPM89; | |||
| 14153 | } | |||
| 14154 | else if ( model == "MPM89Continuum" ) | |||
| 14155 | { | |||
| 14156 | CC = CC_MPM89; | |||
| 14157 | CL = 0.000; | |||
| 14158 | CW = 0.000; | |||
| 14159 | CO = 0.000; | |||
| 14160 | } | |||
| 14161 | else if ( model == "MPM89NoCoupling" ) | |||
| 14162 | { | |||
| 14163 | CC = CC_MPM89; | |||
| 14164 | CL = CL_MPM89; | |||
| 14165 | CW = CW_MPM89; | |||
| 14166 | CO = 0.000; | |||
| 14167 | } | |||
| 14168 | else if ( model == "MPM89NoCutoff" ) | |||
| 14169 | { | |||
| 14170 | CC = CC_MPM89; | |||
| 14171 | CL = CL_MPM89; | |||
| 14172 | CW = CW_MPM89; | |||
| 14173 | CO = CO_MPM89; | |||
| 14174 | AppCutoff = 1; | |||
| 14175 | } | |||
| 14176 | else if ( model == "user" ) | |||
| 14177 | { | |||
| 14178 | CC = CCin; | |||
| 14179 | CL = CLin; | |||
| 14180 | CW = CWin; | |||
| 14181 | CO = COin; | |||
| 14182 | } | |||
| 14183 | else | |||
| 14184 | { | |||
| 14185 | ostringstream os; | |||
| 14186 | os << "O2-MPM89: ERROR! Wrong model values given.\n" | |||
| 14187 | << "Valid models are: 'MPM89' 'MPM89Lines' 'MPM89Continuum' 'MPM89NoCoupling' 'MPM89NoCutoff'" | |||
| 14188 | << "and 'user'" << '\n'; | |||
| 14189 | throw runtime_error(os.str()); | |||
| 14190 | } | |||
| 14191 | out3 << "O2-MPM89: (model=" << model << ") parameter values in use:\n" | |||
| 14192 | << " CC = " << CC << "\n" | |||
| 14193 | << " CL = " << CL << "\n" | |||
| 14194 | << " CW = " << CW << "\n" | |||
| 14195 | << " CO = " << CO << "\n"; | |||
| 14196 | ||||
| 14197 | ||||
| 14198 | // O2 continuum parameters of MPM92: | |||
| 14199 | const Numeric S0 = 6.140e-4; // line strength [ppm] | |||
| 14200 | const Numeric G0 = 5.60e-3; // line width [GHz/kPa] | |||
| 14201 | const Numeric X0 = 0.800; // temperature dependence of line width [1] | |||
| 14202 | ||||
| 14203 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 14204 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 14205 | ||||
| 14206 | // const = VMR * ISORATIO = 0.20946 * 0.99519 | |||
| 14207 | // this constant is already incorporated into the line strength, so we | |||
| 14208 | // have top devide the line strength by this value since arts multiplies pxsec | |||
| 14209 | // by these variables later in abs_coefCalc. | |||
| 14210 | const Numeric VMRISO = 0.2085; | |||
| 14211 | ||||
| 14212 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 14213 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 14213 , "n_p==abs_t.nelem()") : (void)0); | |||
| 14214 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 14214 , "n_p==vmr.nelem()") : (void)0); | |||
| 14215 | ||||
| 14216 | // Check that dimensions of pxsec are consistent with n_f | |||
| 14217 | // and n_p. It should be [n_f,n_p]: | |||
| 14218 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 14218 , "n_f==pxsec.nrows()") : (void)0); | |||
| 14219 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 14219 , "n_p==pxsec.ncols()") : (void)0); | |||
| 14220 | ||||
| 14221 | // Loop pressure/temperature (pressure in hPa therefore the factor 0.01) | |||
| 14222 | for ( Index i=0; i<n_p; ++i ) | |||
| 14223 | { | |||
| 14224 | // check if O2-VMR is exactly zero (caused by zeropadding), then return 0. | |||
| 14225 | if (vmr[i] == 0.) | |||
| 14226 | { | |||
| 14227 | pxsec(joker, i) = 0.; | |||
| 14228 | continue; | |||
| 14229 | } | |||
| 14230 | ||||
| 14231 | // check if O2-VMR will cause an underflow due to division by zero: | |||
| 14232 | if (vmr[i] < VMRCalcLimit) | |||
| 14233 | { | |||
| 14234 | ostringstream os; | |||
| 14235 | os << "ERROR: MPM89 O2 full absorption model has detected a O2 volume mixing ratio of " | |||
| 14236 | << vmr[i] << " which is below the threshold of " << VMRCalcLimit << ".\n" | |||
| 14237 | << "Therefore no calculation is performed.\n"; | |||
| 14238 | throw runtime_error(os.str()); | |||
| 14239 | return; | |||
| 14240 | } | |||
| 14241 | ||||
| 14242 | // relative inverse temperature [1] | |||
| 14243 | Numeric theta = (300.0 / abs_t[i]); | |||
| 14244 | // H2O partial pressure [kPa] | |||
| 14245 | Numeric pwv = Pa_to_kPa * abs_p[i] * abs_h2o[i]; | |||
| 14246 | // dry air partial pressure [kPa] | |||
| 14247 | Numeric pda = (Pa_to_kPa * abs_p[i]) - pwv; | |||
| 14248 | // here the total pressure is devided by the O2 vmr for the | |||
| 14249 | // P_dry calculation because we calculate pxsec and not abs: abs = vmr * pxsec | |||
| 14250 | Numeric pda_dummy = pda; | |||
| 14251 | // O2 continuum strength [ppm] | |||
| 14252 | Numeric strength_cont = S0 * pda_dummy * pow( theta, (Numeric)2. ); | |||
| 14253 | // O2 continuum pseudo line broadening [GHz] | |||
| 14254 | Numeric gam_cont = G0 * (pwv+pda) * pow( theta, X0 ); // GHz | |||
| 14255 | ||||
| 14256 | // Loop over input frequency | |||
| 14257 | for ( Index s=0; s<n_f; ++s ) | |||
| 14258 | { | |||
| 14259 | // input frequency in [GHz] | |||
| 14260 | Numeric ff = f_grid[s] * Hz_to_GHz; | |||
| 14261 | // O2 continuum absorption [1/m] | |||
| 14262 | // cross section: pxsec = absorption / var | |||
| 14263 | // the vmr of O2 will be multiplied at the stage of absorption calculation: | |||
| 14264 | Numeric Nppc = CC * strength_cont * ff * gam_cont / | |||
| 14265 | ( pow( ff, (Numeric)2.) + pow( gam_cont, (Numeric)2.) ); | |||
| 14266 | ||||
| 14267 | // Loop over MPM89 O2 spectral lines: | |||
| 14268 | Numeric Nppl = 0.0; | |||
| 14269 | for ( Index l = i_first; l <= i_last; ++l ) | |||
| 14270 | { | |||
| 14271 | // line strength [ppm] S=A(1,I)*P*V**3*EXP(A(2,I)*(1.-V))*1.E-6 | |||
| 14272 | Numeric strength = CL * mpm89[l][1] * 1.000e-6 * pda_dummy * | |||
| 14273 | pow(theta, (Numeric)3.) * exp(mpm89[l][2]*(1.000-theta)) / | |||
| 14274 | mpm89[l][0]; | |||
| 14275 | // line broadening parameter [GHz] | |||
| 14276 | Numeric gam = CW * ( mpm89[l][3] * 1.000e-3 * | |||
| 14277 | ( ( pda * pow(theta, ((Numeric)0.80-mpm89[l][4]))) + | |||
| 14278 | (1.10 * pwv * theta) ) ); | |||
| 14279 | // line mixing parameter [1] | |||
| 14280 | Numeric delta = CO * ( (mpm89[l][5] + mpm89[l][6] * theta) * 1.000e-3 * | |||
| 14281 | pda * pow(theta, (Numeric)0.8) ); | |||
| 14282 | // absorption [dB/km] like in the original MPM92 | |||
| 14283 | Nppl += strength * MPMLineShapeO2Function(gam, mpm89[l][0], ff, delta); | |||
| 14284 | } | |||
| 14285 | // in MPM89 we adopt the cutoff for O2 line absorption if abs_l < 0 | |||
| 14286 | // absorption cannot be less than 0 according to MPM87 source code. | |||
| 14287 | if (AppCutoff == 0) | |||
| 14288 | { | |||
| 14289 | if (Nppl < 0.000) Nppl = 0.0000; | |||
| 14290 | } | |||
| 14291 | // | |||
| 14292 | // O2 line absorption [1/m] | |||
| 14293 | // cross section: pxsec = absorption / var | |||
| 14294 | // the vmr of O2 will be multiplied at the stage of absorption calculation: | |||
| 14295 | pxsec(s,i) += dB_km_to_1_m * 0.1820 * ff * (Nppl+Nppc) / VMRISO; | |||
| 14296 | } | |||
| 14297 | } | |||
| 14298 | return; | |||
| 14299 | } | |||
| 14300 | // | |||
| 14301 | // ################################################################################# | |||
| 14302 | // | |||
| 14303 | //! MPM92O2AbsModel | |||
| 14304 | /*! | |||
| 14305 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 14306 | O2 according to MPM93 [1/m] | |||
| 14307 | \param CCin scaling factor for the O2-continuum [1] | |||
| 14308 | \param CLin scaling factor for the O2-line strengths [1] | |||
| 14309 | \param CWin scaling factor for the O2-line widths [1] | |||
| 14310 | \param COin scaling factor for the O2-line coupling [1] | |||
| 14311 | \param model allows user defined input parameter set | |||
| 14312 | (CCin, CLin, CWin, and COin)<br> or choice of | |||
| 14313 | pre-defined parameters of specific models (see note below). | |||
| 14314 | \param f_grid predefined frequency grid [Hz] | |||
| 14315 | \param abs_p predefined pressure [Pa] | |||
| 14316 | \param abs_t predefined temperature grid [K] | |||
| 14317 | \param abs_h2o H2O volume mixing ratio profile [1] | |||
| 14318 | \param vmr O2 volume mixing ratio profile [1] | |||
| 14319 | ||||
| 14320 | \note Except for model 'user' the input parameters CCin, CLin, CWin, and COin | |||
| 14321 | are neglected (model dominates over parameters).<br> | |||
| 14322 | Allowed models: 'MPM92', 'MPM92Lines', 'MPM92Continuum', 'MPM92NoCoupling', | |||
| 14323 | 'MPM92NoCutoff', and 'user'. See the user guide for detailed explanations. | |||
| 14324 | ||||
| 14325 | \remark Reference: H. J. Liebe, P. W. Rosenkranz and G. A. Hufford,<br> | |||
| 14326 | <i>Atmospheric 60-GHz Oxygen Spectrum: New Laboratory Measurements | |||
| 14327 | and Line Parameters</i>,<br> | |||
| 14328 | JQSRT, Vol 48, pp. 629-643, 1992 | |||
| 14329 | ||||
| 14330 | \author Thomas Kuhn | |||
| 14331 | \date 2001-11-05 | |||
| 14332 | */ | |||
| 14333 | ||||
| 14334 | void MPM92O2AbsModel (MatrixView pxsec, | |||
| 14335 | const Numeric CCin, // continuum scale factor | |||
| 14336 | const Numeric CLin, // line strength scale factor | |||
| 14337 | const Numeric CWin, // line broadening scale factor | |||
| 14338 | const Numeric COin, // line coupling scale factor | |||
| 14339 | const String& model, | |||
| 14340 | ConstVectorView f_grid, | |||
| 14341 | ConstVectorView abs_p, | |||
| 14342 | ConstVectorView abs_t, | |||
| 14343 | ConstVectorView abs_h2o, | |||
| 14344 | ConstVectorView vmr, | |||
| 14345 | const Verbosity& verbosity) | |||
| 14346 | { | |||
| 14347 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 14348 | ||||
| 14349 | // | |||
| 14350 | // Coefficients are from Liebe et al., AGARD CP-May93, Paper 3/1-10 | |||
| 14351 | // 0 1 2 3 4 5 6 | |||
| 14352 | // f0 a1 a2 a3 a4 a5 a6 | |||
| 14353 | // [GHz] [kHz/hPa] [1] [MHz/hPa] [1] [10³/hPa] | |||
| 14354 | const Numeric mpm92[44][7] = { | |||
| 14355 | { 50.474238, 0.094, 9.694, 0.850, 0.0, 0.210, 0.685}, // 0 | |||
| 14356 | { 50.987749, 0.246, 8.694, 0.870, 0.0, 0.190, 0.680}, // 1 | |||
| 14357 | { 51.503350, 0.608, 7.744, 0.890, 0.0, 0.171, 0.673}, // 2 | |||
| 14358 | { 52.021410, 1.414, 6.844, 0.920, 0.0, 0.144, 0.664}, // 3 | |||
| 14359 | { 52.542394, 3.102, 6.004, 0.940, 0.0, 0.118, 0.653}, // 4 | |||
| 14360 | { 53.066907, 6.410, 5.224, 0.970, 0.0, 0.114, 0.621}, // 5 | |||
| 14361 | { 53.595749, 12.470, 4.484, 1.000, 0.0, 0.200, 0.508}, // 6 | |||
| 14362 | { 54.130000, 22.800, 3.814, 1.020, 0.0, 0.291, 0.375}, // 7 | |||
| 14363 | { 54.671159, 39.180, 3.194, 1.050, 0.0, 0.325, 0.265}, // 8 | |||
| 14364 | { 55.221367, 63.160, 2.624, 1.080, 0.0, 0.224, 0.295}, // 9 | |||
| 14365 | { 55.783802, 95.350, 2.119, 1.110, 0.0, -0.144, 0.613}, // 0 | |||
| 14366 | { 56.264775, 54.890, 0.015, 1.646, 0.0, 0.339, -0.098}, // 11 | |||
| 14367 | { 56.363389, 134.400, 1.660, 1.144, 0.0, -0.258, 0.655}, // 12 | |||
| 14368 | { 56.968206, 176.300, 1.260, 1.181, 0.0, -0.362, 0.645}, // 13 | |||
| 14369 | { 57.612484, 214.100, 0.915, 1.221, 0.0, -0.533, 0.606}, // 14 | |||
| 14370 | { 58.323877, 238.600, 0.626, 1.266, 0.0, -0.178, 0.044}, // 15 | |||
| 14371 | { 58.446590, 145.700, 0.084, 1.449, 0.0, 0.650, -0.127}, // 16 | |||
| 14372 | { 59.164207, 240.400, 0.391, 1.319, 0.0, -0.628, 0.231}, // 17 | |||
| 14373 | { 59.590983, 211.200, 0.212, 1.360, 0.0, 0.665, -0.078}, // 18 | |||
| 14374 | { 60.306061, 212.400, 0.212, 1.382, 0.0, -0.613, 0.070}, // 19 | |||
| 14375 | { 60.434776, 246.100, 0.391, 1.297, 0.0, 0.606, -0.282}, // 20 | |||
| 14376 | { 61.150560, 250.400, 0.626, 1.248, 0.0, 0.090, -0.058}, // 21 | |||
| 14377 | { 61.800154, 229.800, 0.915, 1.207, 0.0, 0.496, -0.662}, // 22 | |||
| 14378 | { 62.411215, 193.300, 1.260, 1.171, 0.0, 0.313, -0.676}, // 23 | |||
| 14379 | { 62.486260, 151.700, 0.083, 1.468, 0.0, -0.433, 0.084}, // 24 | |||
| 14380 | { 62.997977, 150.300, 1.665, 1.139, 0.0, 0.208, -0.668}, // 25 | |||
| 14381 | { 63.568518, 108.700, 2.115, 1.110, 0.0, 0.094, -0.614}, // 26 | |||
| 14382 | { 64.127767, 73.350, 2.620, 1.080, 0.0, -0.270, -0.289}, // 27 | |||
| 14383 | { 64.678903, 46.350, 3.195, 1.050, 0.0, -0.366, -0.259}, // 28 | |||
| 14384 | { 65.224071, 27.480, 3.815, 1.020, 0.0, -0.326, -0.368}, // 29 | |||
| 14385 | { 65.764772, 15.300, 4.485, 1.000, 0.0, -0.232, -0.500}, // 30 | |||
| 14386 | { 66.302091, 8.009, 5.225, 0.970, 0.0, -0.146, -0.609}, // 31 | |||
| 14387 | { 66.836830, 3.946, 6.005, 0.940, 0.0, -0.147, -0.639}, // 32 | |||
| 14388 | { 67.369598, 1.832, 6.845, 0.920, 0.0, -0.174, -0.647}, // 33 | |||
| 14389 | { 67.900867, 0.801, 7.745, 0.890, 0.0, -0.198, -0.655}, // 34 | |||
| 14390 | { 68.431005, 0.330, 8.695, 0.870, 0.0, -0.210, -0.660}, // 35 | |||
| 14391 | { 68.960311, 0.128, 9.695, 0.850, 0.0, -0.220, -0.665}, // 36 | |||
| 14392 | { 118.750343, 94.500, 0.009, 1.630, 0.0, -0.031, 0.008}, // 37 | |||
| 14393 | { 368.498350, 6.790, 0.049, 1.920, 0.6, 0.000, 0.000}, // 38 | |||
| 14394 | { 424.763124, 63.800, 0.044, 1.926, 0.6, 0.000, 0.000}, // 39 | |||
| 14395 | { 487.249370, 23.500, 0.049, 1.920, 0.6, 0.000, 0.000}, // 40 | |||
| 14396 | { 715.393150, 9.960, 0.145, 1.810, 0.6, 0.000, 0.000}, // 41 | |||
| 14397 | { 773.839675, 67.100, 0.130, 1.810, 0.6, 0.000, 0.000}, // 42 | |||
| 14398 | { 834.145330, 18.000, 0.147, 1.810, 0.6, 0.000, 0.000}}; // 43 | |||
| 14399 | ||||
| 14400 | // number of lines of Liebe O2-line catalog (0-43 lines) | |||
| 14401 | const Index i_first = 0; | |||
| 14402 | const Index i_last = 43; // all the spec. lines up to 1THz | |||
| 14403 | // const Index i_last = 37; // only the 60GHz complex + 118GHz line | |||
| 14404 | ||||
| 14405 | ||||
| 14406 | // --------- STANDARD MODEL PARAMETERS --------------------------------------------------- | |||
| 14407 | // standard values for the MPM92 model (JQSRT, Vol 48, pp. 629-643, 1992): | |||
| 14408 | const Numeric CC_MPM92 = 1.00000; | |||
| 14409 | const Numeric CL_MPM92 = 1.00000; | |||
| 14410 | const Numeric CW_MPM92 = 1.00000; | |||
| 14411 | const Numeric CO_MPM92 = 1.00000; | |||
| 14412 | int AppCutoff = 0; | |||
| 14413 | // --------------------------------------------------------------------------------------- | |||
| 14414 | ||||
| 14415 | ||||
| 14416 | // select the parameter set (!!model dominates values!!): | |||
| 14417 | Numeric CC, CL, CW, CO; | |||
| 14418 | if ( model == "MPM92" ) | |||
| 14419 | { | |||
| 14420 | CC = CC_MPM92; | |||
| 14421 | CL = CL_MPM92; | |||
| 14422 | CW = CW_MPM92; | |||
| 14423 | CO = CO_MPM92; | |||
| 14424 | } | |||
| 14425 | else if ( model == "MPM92Lines" ) | |||
| 14426 | { | |||
| 14427 | CC = 0.000; | |||
| 14428 | CL = CL_MPM92; | |||
| 14429 | CW = CW_MPM92; | |||
| 14430 | CO = CO_MPM92; | |||
| 14431 | } | |||
| 14432 | else if ( model == "MPM92Continuum" ) | |||
| 14433 | { | |||
| 14434 | CC = CC_MPM92; | |||
| 14435 | CL = 0.000; | |||
| 14436 | CW = 0.000; | |||
| 14437 | CO = 0.000; | |||
| 14438 | } | |||
| 14439 | else if ( model == "MPM92NoCoupling" ) | |||
| 14440 | { | |||
| 14441 | CC = CC_MPM92; | |||
| 14442 | CL = CL_MPM92; | |||
| 14443 | CW = CW_MPM92; | |||
| 14444 | CO = 0.000; | |||
| 14445 | } | |||
| 14446 | else if ( model == "MPM92NoCutoff" ) | |||
| 14447 | { | |||
| 14448 | CC = CC_MPM92; | |||
| 14449 | CL = CL_MPM92; | |||
| 14450 | CW = CW_MPM92; | |||
| 14451 | CO = CO_MPM92; | |||
| 14452 | AppCutoff = 1; | |||
| 14453 | } | |||
| 14454 | else if ( model == "user" ) | |||
| 14455 | { | |||
| 14456 | CC = CCin; | |||
| 14457 | CL = CLin; | |||
| 14458 | CW = CWin; | |||
| 14459 | CO = COin; | |||
| 14460 | } | |||
| 14461 | else | |||
| 14462 | { | |||
| 14463 | ostringstream os; | |||
| 14464 | os << "O2-MPM92: ERROR! Wrong model values given.\n" | |||
| 14465 | << "Valid models are: 'MPM92' 'MPM92Lines' 'MPM92Continuum' 'MPM92NoCoupling' 'MPM92NoCutoff'" | |||
| 14466 | << "and 'user'" << '\n'; | |||
| 14467 | throw runtime_error(os.str()); | |||
| 14468 | } | |||
| 14469 | out3 << "O2-MPM92: (model=" << model << ") parameter values in use:\n" | |||
| 14470 | << " CC = " << CC << "\n" | |||
| 14471 | << " CL = " << CL << "\n" | |||
| 14472 | << " CW = " << CW << "\n" | |||
| 14473 | << " CO = " << CO << "\n"; | |||
| 14474 | ||||
| 14475 | ||||
| 14476 | // const = VMR * ISORATIO = 0.20946 * 0.99519 | |||
| 14477 | // this constant is already incorporated into the line strength, so we | |||
| 14478 | // have top devide the line strength by this value since arts multiplies pxsec | |||
| 14479 | // by these variables later in abs_coefCalc. | |||
| 14480 | const Numeric VMRISO = 0.2085; | |||
| 14481 | ||||
| 14482 | // O2 continuum parameters of MPM92: | |||
| 14483 | const Numeric S0 = 6.140e-5; // line strength [ppm] | |||
| 14484 | const Numeric G0 = 0.560e-3; // line width [GHz/hPa] | |||
| 14485 | const Numeric X0 = 0.800; // temperature dependence of line width [1] | |||
| 14486 | ||||
| 14487 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 14488 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 14489 | ||||
| 14490 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 14491 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 14491 , "n_p==abs_t.nelem()") : (void)0); | |||
| 14492 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 14492 , "n_p==vmr.nelem()") : (void)0); | |||
| 14493 | ||||
| 14494 | // Check that dimensions of pxsec are consistent with n_f | |||
| 14495 | // and n_p. It should be [n_f,n_p]: | |||
| 14496 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 14496 , "n_f==pxsec.nrows()") : (void)0); | |||
| 14497 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 14497 , "n_p==pxsec.ncols()") : (void)0); | |||
| 14498 | ||||
| 14499 | // Loop pressure/temperature (pressure in hPa therefore the factor 0.01) | |||
| 14500 | for ( Index i=0; i<n_p; ++i ) | |||
| 14501 | { | |||
| 14502 | // check if O2-VMR is exactly zero (caused by zeropadding), then return 0. | |||
| 14503 | if (vmr[i] == 0.) | |||
| 14504 | { | |||
| 14505 | pxsec(joker, i) = 0.; | |||
| 14506 | continue; | |||
| 14507 | } | |||
| 14508 | ||||
| 14509 | // check if O2-VMR will cause an underflow due to division by zero: | |||
| 14510 | if (vmr[i] < VMRCalcLimit) | |||
| 14511 | { | |||
| 14512 | ostringstream os; | |||
| 14513 | os << "ERROR: MPM92 O2 full absorption model has detected a O2 volume mixing ratio of " | |||
| 14514 | << vmr[i] << " which is below the threshold of " << VMRCalcLimit << ".\n" | |||
| 14515 | << "Therefore no calculation is performed.\n"; | |||
| 14516 | throw runtime_error(os.str()); | |||
| 14517 | return; | |||
| 14518 | } | |||
| 14519 | ||||
| 14520 | // relative inverse temperature [1] | |||
| 14521 | Numeric theta = (300.0 / abs_t[i]); | |||
| 14522 | // H2O partial pressure [hPa] | |||
| 14523 | Numeric pwv = Pa_to_hPa * abs_p[i] * abs_h2o[i]; | |||
| 14524 | // dry air partial pressure [hPa] | |||
| 14525 | Numeric pda = (Pa_to_hPa * abs_p[i]) - pwv; | |||
| 14526 | // here the total pressure is devided by the O2 vmr for the | |||
| 14527 | // P_dry calculation because we calculate pxsec and not abs: abs = vmr * pxsec | |||
| 14528 | Numeric pda_dummy = pda; | |||
| 14529 | // O2 continuum strength [ppm] | |||
| 14530 | Numeric strength_cont = S0 * pda_dummy * pow( theta, (Numeric)2. ); | |||
| 14531 | // O2 continuum pseudo line broadening [GHz] | |||
| 14532 | Numeric gam_cont = G0 * (pwv+pda) * pow( theta, X0 ); // GHz | |||
| 14533 | ||||
| 14534 | // Loop over input frequency | |||
| 14535 | for ( Index s=0; s<n_f; ++s ) | |||
| 14536 | { | |||
| 14537 | // input frequency in [GHz] | |||
| 14538 | Numeric ff = f_grid[s] * Hz_to_GHz; | |||
| 14539 | // O2 continuum absorption [1/m] | |||
| 14540 | // cross section: pxsec = absorption / var | |||
| 14541 | // the vmr of O2 will be multiplied at the stage of absorption calculation: | |||
| 14542 | Numeric Nppc = CC * strength_cont * ff * gam_cont / | |||
| 14543 | ( pow( ff, (Numeric)2.) + pow( gam_cont, (Numeric)2.) ); | |||
| 14544 | ||||
| 14545 | // Loop over MPM92 O2 spectral lines: | |||
| 14546 | Numeric Nppl = 0.0; | |||
| 14547 | for ( Index l = i_first; l <= i_last; ++l ) | |||
| 14548 | { | |||
| 14549 | // line strength [ppm] S=A(1,I)*P*V**3*EXP(A(2,I)*(1.-V))*1.E-6 | |||
| 14550 | Numeric strength = CL * 1.000e-6 * pda_dummy * mpm92[l][1] / mpm92[l][0] * | |||
| 14551 | pow(theta, (Numeric)3.) * exp(mpm92[l][2]*(1.0-theta)); | |||
| 14552 | // line broadening parameter [GHz] | |||
| 14553 | Numeric gam = CW * ( mpm92[l][3] * 0.001 * | |||
| 14554 | ( ( pda * pow(theta, ((Numeric)0.8-mpm92[l][4]))) + | |||
| 14555 | (1.10 * pwv * theta) ) ); | |||
| 14556 | // line mixing parameter [1] | |||
| 14557 | // if (l < 11) CD = 1.1000; | |||
| 14558 | Numeric delta = CO * ( (mpm92[l][5] + mpm92[l][6] * theta) * | |||
| 14559 | (pda+pwv) * 0.001 * pow(theta, (Numeric)0.8) ); | |||
| 14560 | // absorption [dB/km] like in the original MPM92 | |||
| 14561 | Nppl += strength * MPMLineShapeO2Function(gam, mpm92[l][0], ff, delta); | |||
| 14562 | } | |||
| 14563 | // in MPM92 we adopt the cutoff for O2 line absorption if abs_l < 0 | |||
| 14564 | // absorption cannot be less than 0 according to MPM87 and MPM93 source code. | |||
| 14565 | if (AppCutoff == 0) | |||
| 14566 | { | |||
| 14567 | if (Nppl < 0.000) Nppl = 0.0000; | |||
| 14568 | } | |||
| 14569 | // | |||
| 14570 | // O2 line absorption [1/m] | |||
| 14571 | // cross section: pxsec = absorption / var | |||
| 14572 | // the vmr of O2 will be multiplied at the stage of absorption calculation: | |||
| 14573 | pxsec(s,i) += dB_km_to_1_m * 0.1820 * ff * (Nppl+Nppc) / VMRISO; | |||
| 14574 | } | |||
| 14575 | } | |||
| 14576 | return; | |||
| 14577 | } | |||
| 14578 | // | |||
| 14579 | // ################################################################################# | |||
| 14580 | //! TRE05O2AbsModel | |||
| 14581 | /*! | |||
| 14582 | * \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 14583 | * O2 according to TRE05 [1/m] | |||
| 14584 | * \param CCin scaling factor for the O2-continuum [1] | |||
| 14585 | * \param CLin scaling factor for the O2-line strengths [1] | |||
| 14586 | * \param CWin scaling factor for the O2-line widths [1] | |||
| 14587 | * \param COin scaling factor for the O2-line coupling [1] | |||
| 14588 | * \param model allows user defined input parameter set | |||
| 14589 | * (CCin, CLin, CWin, and COin)<br> or choice of | |||
| 14590 | * pre-defined parameters of specific models (see note below). | |||
| 14591 | * \param f_grid predefined frequency grid [Hz] | |||
| 14592 | * \param abs_p predefined pressure [Pa] | |||
| 14593 | * \param abs_t predefined temperature grid [K] | |||
| 14594 | * \param abs_h2o H2O volume mixing ratio profile [1] | |||
| 14595 | * \param vmr O2 volume mixing ratio profile [1] | |||
| 14596 | * | |||
| 14597 | * \note Except for model 'user' the input parameters CCin, CLin, CWin, and COin | |||
| 14598 | * are neglected (model dominates over parameters).<br> | |||
| 14599 | * Allowed models: 'TRE05', 'TRE05Lines', 'TRE05Continuum', 'TRE05NoCoupling', | |||
| 14600 | * 'TRE05NoCutoff', and 'user'. See the user guide for detailed explanations. | |||
| 14601 | * | |||
| 14602 | * \remark References: H. J. Liebe and G. A. Hufford and M. G. Cotton,<br> | |||
| 14603 | * <i>Propagation modeling of moist air and suspended water/ice | |||
| 14604 | * particles at frequencies below 1000 GHz</i>,<br> | |||
| 14605 | * AGARD 52nd Specialists Meeting of the Electromagnetic Wave | |||
| 14606 | * Propagation Panel,<br> Palma de Mallorca, Spain, 1993, May 17-21 | |||
| 14607 | * | |||
| 14608 | * M.Yu. Tretyakov, M.A. Koshelev, V.V. Dorovskikh, | |||
| 14609 | * D.S. Makarov, P.W. Rosenkranz; 60-GHz oxygen band: precise broadening and central frequencies | |||
| 14610 | * of fine-structure lines, absolute absorption profile | |||
| 14611 | * at atmospheric pressure, and revision of mixing coefficients | |||
| 14612 | * doi:10.1016/j.jms.2004.11.011 | |||
| 14613 | * | |||
| 14614 | * \remark This is a copy of MPM93O2AbsModel with an exception of having new values from | |||
| 14615 | * the Tretyakov etal. 2005 paper. | |||
| 14616 | * | |||
| 14617 | * \author Richard Larsson | |||
| 14618 | * \date 2013-09-20 | |||
| 14619 | */ | |||
| 14620 | ||||
| 14621 | void TRE05O2AbsModel (MatrixView pxsec, | |||
| 14622 | const Numeric CCin, // continuum scale factor | |||
| 14623 | const Numeric CLin, // line strength scale factor | |||
| 14624 | const Numeric CWin, // line broadening scale factor | |||
| 14625 | const Numeric COin, // line coupling scale factor | |||
| 14626 | const String& model, | |||
| 14627 | ConstVectorView f_grid, | |||
| 14628 | ConstVectorView abs_p, | |||
| 14629 | ConstVectorView abs_t, | |||
| 14630 | ConstVectorView abs_h2o, // VMR 0f H2O | |||
| 14631 | ConstVectorView vmr, // VMR of O2 | |||
| 14632 | const Verbosity& verbosity) | |||
| 14633 | { | |||
| 14634 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 14635 | ||||
| 14636 | // | |||
| 14637 | // Coefficients are from Liebe et al., AGARD CP-May93, Paper 3/1-10 | |||
| 14638 | // 0 1 2 3 4 5 6 | |||
| 14639 | // f0 a1 a2 a3 a4 a5 a6 | |||
| 14640 | // [GHz] [kHz/hPa] [1] [MHz/hPa] [1] [10³/hPa] | |||
| 14641 | const Numeric tre05[44][7] = { | |||
| 14642 | { 50.474214, 0.975/10, 9.651, 0.669, 0.0, 0.2566, 0.685}, // 37- | |||
| 14643 | { 50.987745, 2.529/10, 8.653, 0.717, 0.0, 0.2246, 0.680}, // 35- | |||
| 14644 | { 51.503360, 6.193/10, 7.709, 0.764, 0.0, 0.1947, 0.6729}, // 33- | |||
| 14645 | { 52.021429, 14.32/10, 6.819, 0.811, 0.0, 0.1667, 0.6640}, // 31- | |||
| 14646 | { 52.542418, 31.24/10, 5.983, 0.858, 0.0, 0.1388, 0.6526}, // 29- | |||
| 14647 | { 53.066934, 64.29/10, 5.201, 0.906, 0.0, 0.1349, 0.6206}, // 27- | |||
| 14648 | { 53.595775, 124.6/10, 4.474, 0.955, 0.0, 0.2227, 0.5085}, // 25- | |||
| 14649 | { 54.130025, 227.3/10, 3.800, 0.996, 0.0, 0.3170, 0.3750}, // 23- | |||
| 14650 | { 54.671180, 389.7/10, 3.182, 1.037, 0.0, 0.3558, 0.2654}, // 21- | |||
| 14651 | { 55.221384, 627.1/10, 2.618, 1.089, 0.0, 0.2560, 0.2952}, // 19- | |||
| 14652 | { 55.783815, 945.3/10, 2.109, 1.134, 0.0, -0.1172, 0.6135}, // 17- | |||
| 14653 | { 56.264774, 543.4/10, 0.014, 1.703, 0.0, 0.3525, -0.0978}, // 1+ | |||
| 14654 | { 56.363399, 1331.8/10, 1.654, 1.189, 0.0, -0.2378, 0.6547}, // 15- | |||
| 14655 | { 56.968211, 1746.6/10, 1.255, 1.223, 0.0, -0.3545, 0.6451}, // 13- | |||
| 14656 | { 57.612486, 2120.1/10, 0.910, 1.262, 0.0, -0.5416, 0.6056}, // 11- | |||
| 14657 | { 58.323877, 2363.7/10, 0.621, 1.295, 0.0, -0.1932, 0.0436}, // 9- | |||
| 14658 | { 58.446588, 1442.1/10, 0.083, 1.491, 0.0, 0.6768, -0.1273}, // 3+ | |||
| 14659 | { 59.164204, 2379.9/10, 0.387, 1.353, 0.0, -0.6561, 0.2309}, // 7- | |||
| 14660 | { 59.590983, 2090.7/10, 0.207, 1.408, 0.0, 0.6957, -0.0776}, // 5+ | |||
| 14661 | { 60.306056, 2103.4/10, 0.207, 1.415, 0.0, -0.6395, 0.0699}, // 5- | |||
| 14662 | { 60.434778, 2438.0/10, 0.386, 1.339, 0.0, 0.6342, -0.2825}, // 7+ | |||
| 14663 | { 61.150562, 2479.5/10, 0.621, 1.292, 0.0, 0.1014, -0.0584}, // 9+ | |||
| 14664 | { 61.800158, 2275.9/10, 0.910, 1.263, 0.0, 0.5014, -0.6619}, // 11+ | |||
| 14665 | { 62.411220, 1915.4/10, 1.255, 1.217, 0.0, 0.3029, -0.6759}, // 13+ | |||
| 14666 | { 62.486253, 1503.0/10, 0.083, 1.513, 0.0, -0.4499, 0.0844}, // 3- | |||
| 14667 | { 62.997984, 1490.2/10, 1.654, 1.174, 0.0, 0.1856, -0.6675}, // 15+ | |||
| 14668 | { 63.568526, 1078.0/10, 2.108, 1.134, 0.0, 0.0658, -0.6139}, // 17+ | |||
| 14669 | { 64.127775, 728.7/10, 2.617, 1.088, 0.0, -0.3036, -0.2895}, // 19+ | |||
| 14670 | { 64.678910, 461.3/10, 3.181, 1.038, 0.0, -0.3968, -0.2590}, // 21+ | |||
| 14671 | { 65.224078, 274.0/10, 3.800, 0.996, 0.0, -0.3528, -0.3680}, // 23+ | |||
| 14672 | { 65.764779, 153.0/10, 4.473, 0.955, 0.0, -0.2548, -0.5002}, // 25+ | |||
| 14673 | { 66.302096, 80.40/10, 5.200, 0.906, 0.0, -0.1660, -0.6091}, // 27+ | |||
| 14674 | { 66.836834, 39.80/10, 5.982, 0.858, 0.0, -0.1680, -0.6393}, // 29+ | |||
| 14675 | { 67.369601, 18.56/10, 6.818, 0.811, 0.0, -0.1956, -0.6475}, // 31+ | |||
| 14676 | { 67.900868, 8.172/10, 7.708, 0.764, 0.0, -0.2216, -0.6545}, // 33+ | |||
| 14677 | { 68.431006, 3.397/10, 8.652, 0.717, 0.0, -0.2492, -0.660}, // 35+ | |||
| 14678 | { 68.960312, 1.334/10, 9.650, 0.669, 0.0, -0.2773, -0.665}, // 37+ | |||
| 14679 | { 118.750334, 940.3/10, 0.010, 1.664, 0.0, -0.0439, 0.0079}, // 1- | |||
| 14680 | { 368.498246, 67.4/10, 0.048, 1.64, 0.6, 0.0, 0.0}, // QN1 | |||
| 14681 | { 424.763020, 637.7/10, 0.044, 1.64, 0.6, 0.0, 0.0}, // QN2 | |||
| 14682 | { 487.249273, 237.4/10, 0.049, 1.60, 0.6, 0.0, 0.0}, // QN3 | |||
| 14683 | { 715.392902, 98.1/10, 0.145, 1.60, 0.6, 0.0, 0.0}, // QN4 | |||
| 14684 | { 773.839490, 572.3/10, 0.141, 1.62, 0.6, 0.0, 0.0}, // QN5 | |||
| 14685 | { 834.145546, 183.1/10, 0.145, 1.47, 0.6, 0.0, 0.0}};// QN6 | |||
| 14686 | // number of lines of Liebe O2-line catalog (0-43 lines) | |||
| 14687 | const Index i_first = 0; | |||
| 14688 | const Index i_last = 43; // all the spec. lines up to 1THz | |||
| 14689 | // const Index i_last = 37; // only the 60GHz complex + 118GHz line | |||
| 14690 | ||||
| 14691 | ||||
| 14692 | // --------- STANDARD MODEL PARAMETERS --------------------------------------------------- | |||
| 14693 | // standard values for the MPM87 model (Radio Science, 20(5), 1985, 1069): | |||
| 14694 | const Numeric CC_TRE05 = 1.00000; | |||
| 14695 | const Numeric CL_TRE05 = 1.00000; | |||
| 14696 | const Numeric CW_TRE05 = 1.00000; | |||
| 14697 | const Numeric CO_TRE05 = 1.00000; | |||
| 14698 | int AppCutoff = 0; | |||
| 14699 | // --------------------------------------------------------------------------------------- | |||
| 14700 | ||||
| 14701 | ||||
| 14702 | // select the parameter set (!!model dominates values!!): | |||
| 14703 | Numeric CC, CL, CW, CO; | |||
| 14704 | if ( model == "TRE05" ) | |||
| 14705 | { | |||
| 14706 | CC = CC_TRE05; | |||
| 14707 | CL = CL_TRE05; | |||
| 14708 | CW = CW_TRE05; | |||
| 14709 | CO = CO_TRE05; | |||
| 14710 | } | |||
| 14711 | else if ( model == "TRE05Lines" ) | |||
| 14712 | { | |||
| 14713 | CC = 0.000; | |||
| 14714 | CL = CL_TRE05; | |||
| 14715 | CW = CW_TRE05; | |||
| 14716 | CO = CO_TRE05; | |||
| 14717 | } | |||
| 14718 | else if ( model == "TRE05Continuum" ) | |||
| 14719 | { | |||
| 14720 | CC = CC_TRE05; | |||
| 14721 | CL = 0.000; | |||
| 14722 | CW = 0.000; | |||
| 14723 | CO = 0.000; | |||
| 14724 | } | |||
| 14725 | else if ( model == "TRE05NoCoupling" ) | |||
| 14726 | { | |||
| 14727 | CC = CC_TRE05; | |||
| 14728 | CL = CL_TRE05; | |||
| 14729 | CW = CW_TRE05; | |||
| 14730 | CO = 0.000; | |||
| 14731 | } | |||
| 14732 | else if ( model == "TRE05NoCutoff" ) | |||
| 14733 | { | |||
| 14734 | // !!ATTENTION!! | |||
| 14735 | // In the window regions the total absorption can get negative values. | |||
| 14736 | // So be carefull with this selection! | |||
| 14737 | CC = CC_TRE05; | |||
| 14738 | CL = CL_TRE05; | |||
| 14739 | CW = CW_TRE05; | |||
| 14740 | CO = CO_TRE05; | |||
| 14741 | AppCutoff = 1; | |||
| 14742 | } | |||
| 14743 | else if ( model == "user" ) | |||
| 14744 | { | |||
| 14745 | CC = CCin; | |||
| 14746 | CL = CLin; | |||
| 14747 | CW = CWin; | |||
| 14748 | CO = COin; | |||
| 14749 | } | |||
| 14750 | else | |||
| 14751 | { | |||
| 14752 | ostringstream os; | |||
| 14753 | os << "O2-TRE05: ERROR! Wrong model values given.\n" | |||
| 14754 | << "Valid models are: 'TRE05' 'TRE05Lines' 'TRE05Continuum' 'TRE05NoCoupling' 'TRE05NoCutoff'" | |||
| 14755 | << "and 'user'" << '\n'; | |||
| 14756 | throw runtime_error(os.str()); | |||
| 14757 | } | |||
| 14758 | out3 << "O2-TRE05: (model=" << model << ") parameter values in use:\n" | |||
| 14759 | << " CC = " << CC << "\n" | |||
| 14760 | << " CL = " << CL << "\n" | |||
| 14761 | << " CW = " << CW << "\n" | |||
| 14762 | << " CO = " << CO << "\n"; | |||
| 14763 | ||||
| 14764 | ||||
| 14765 | // const = VMR * ISORATIO = 0.20946 * 0.99519 | |||
| 14766 | // this constant is already incorporated into the line strength, so we | |||
| 14767 | // have top devide the line strength by this value since arts multiplies pxsec | |||
| 14768 | // by these variables later in abs_coefCalc. | |||
| 14769 | const Numeric VMRISO = 0.2085; | |||
| 14770 | ||||
| 14771 | // O2 continuum parameters of TRE05: | |||
| 14772 | const Numeric S0 = 6.140e-5; // line strength [ppm] | |||
| 14773 | const Numeric G0 = 0.560e-3; // line width [GHz/hPa] | |||
| 14774 | const Numeric X0 = 0.800; // temperature dependence of line width [1] | |||
| 14775 | ||||
| 14776 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 14777 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 14778 | ||||
| 14779 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 14780 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 14780 , "n_p==abs_t.nelem()") : (void)0); | |||
| 14781 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 14781 , "n_p==vmr.nelem()") : (void)0); | |||
| 14782 | ||||
| 14783 | // Check that dimensions of pxsec are consistent with n_f | |||
| 14784 | // and n_p. It should be [n_f,n_p]: | |||
| 14785 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 14785 , "n_f==pxsec.nrows()") : (void)0); | |||
| 14786 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 14786 , "n_p==pxsec.ncols()") : (void)0); | |||
| 14787 | ||||
| 14788 | // Loop pressure/temperature (pressure in hPa therefore the factor 0.01) | |||
| 14789 | for ( Index i=0; i<n_p; ++i ) | |||
| 14790 | { | |||
| 14791 | // check if O2-VMR is exactly zero (caused by zeropadding), then return 0. | |||
| 14792 | if (vmr[i] == 0.) | |||
| 14793 | { | |||
| 14794 | pxsec(joker, i) = 0.; | |||
| 14795 | continue; | |||
| 14796 | } | |||
| 14797 | ||||
| 14798 | // check if O2-VMR will cause an underflow due to division by zero: | |||
| 14799 | if (vmr[i] < VMRCalcLimit) | |||
| 14800 | { | |||
| 14801 | ostringstream os; | |||
| 14802 | os << "ERROR: TRE05 O2 full absorption model has detected a O2 volume mixing ratio of " | |||
| 14803 | << vmr[i] << " which is below the threshold of " << VMRCalcLimit << ".\n" | |||
| 14804 | << "Therefore no calculation is performed.\n"; | |||
| 14805 | throw runtime_error(os.str()); | |||
| 14806 | return; | |||
| 14807 | } | |||
| 14808 | ||||
| 14809 | // relative inverse temperature [1] | |||
| 14810 | Numeric theta = (300.0 / abs_t[i]); | |||
| 14811 | // H2O partial pressure [hPa] | |||
| 14812 | Numeric pwv = Pa_to_hPa * abs_p[i] * abs_h2o[i]; | |||
| 14813 | // dry air partial pressure [hPa] | |||
| 14814 | Numeric pda = (Pa_to_hPa * abs_p[i]) - pwv; | |||
| 14815 | // here the total pressure is devided by the O2 vmr for the | |||
| 14816 | // P_dry calculation because we calculate pxsec and not abs: abs = vmr * pxsec | |||
| 14817 | // old version without VMRISO: Numeric pda_dummy = pda / vmr[i]; | |||
| 14818 | Numeric pda_dummy = pda; | |||
| 14819 | // O2 continuum strength [ppm] | |||
| 14820 | Numeric strength_cont = S0 * pda_dummy * pow( theta, (Numeric)2. ); | |||
| 14821 | // O2 continuum pseudo line broadening [GHz] | |||
| 14822 | Numeric gam_cont = G0 * (pwv+pda) * pow( theta, X0 ); // GHz | |||
| 14823 | ||||
| 14824 | // Loop over input frequency | |||
| 14825 | for ( Index s=0; s<n_f; ++s ) | |||
| 14826 | { | |||
| 14827 | // input frequency in [GHz] | |||
| 14828 | Numeric ff = f_grid[s] * Hz_to_GHz; | |||
| 14829 | // O2 continuum absorption [1/m] | |||
| 14830 | // cross section: pxsec = absorption / var | |||
| 14831 | // the vmr of O2 will be multiplied at the stage of absorption calculation: | |||
| 14832 | Numeric Nppc = CC * strength_cont * ff * gam_cont / | |||
| 14833 | ( pow( ff, (Numeric)2.) | |||
| 14834 | + pow( gam_cont, (Numeric)2.) ); | |||
| 14835 | ||||
| 14836 | // Loop over TRE05 O2 spectral lines: | |||
| 14837 | Numeric Nppl = 0.0; | |||
| 14838 | for ( Index l = i_first; l <= i_last; ++l ) | |||
| 14839 | { | |||
| 14840 | // line strength [ppm] S=A(1,I)*P*V**3*EXP(A(2,I)*(1.-V))*1.E-6 | |||
| 14841 | Numeric strength = CL * 1.000e-6 * pda_dummy * | |||
| 14842 | tre05[l][1] / tre05[l][0] * | |||
| 14843 | pow(theta, (Numeric)3.) * exp(tre05[l][2]*(1.0-theta)); | |||
| 14844 | // line broadening parameter [GHz] | |||
| 14845 | Numeric gam = CW * ( tre05[l][3] * 0.001 * | |||
| 14846 | ( ( pda * pow(theta, ((Numeric)0.8-tre05[l][4]))) + | |||
| 14847 | (1.10 * pwv * theta) ) ); | |||
| 14848 | // line mixing parameter [1] | |||
| 14849 | // if (l < 11) CD = 1.1000; | |||
| 14850 | Numeric delta = CO * ( (tre05[l][5] + tre05[l][6] * theta) * | |||
| 14851 | (pda+pwv) * pow(theta, (Numeric)0.8) | |||
| 14852 | * (Numeric)0.001 ); | |||
| 14853 | // absorption [dB/km] like in the original TRE05 | |||
| 14854 | Nppl += strength * MPMLineShapeO2Function(gam, tre05[l][0], ff, delta); | |||
| 14855 | } | |||
| 14856 | // in TRE05 there is a cutoff for O2 line absorption if abs_l < 0 | |||
| 14857 | // absorption cannot be less than 0 according to TRE05 philosophy. | |||
| 14858 | if (AppCutoff == 0) | |||
| 14859 | { | |||
| 14860 | if (Nppl < 0.000) Nppl = 0.0000;// <---!!IMPORTANT FEATURE!! | |||
| 14861 | } | |||
| 14862 | // | |||
| 14863 | // O2 line absorption [1/m] | |||
| 14864 | // cross section: pxsec = absorption / var | |||
| 14865 | // the vmr of O2 will be multiplied at the stage of absorption calculation: | |||
| 14866 | pxsec(s,i) += dB_km_to_1_m * 0.1820 * ff * (Nppl+Nppc) / VMRISO; | |||
| 14867 | } | |||
| 14868 | } | |||
| 14869 | return; | |||
| 14870 | } | |||
| 14871 | // | |||
| 14872 | // ################################################################################# | |||
| 14873 | //! MPM93O2AbsModel | |||
| 14874 | /*! | |||
| 14875 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 14876 | O2 according to MPM93 [1/m] | |||
| 14877 | \param CCin scaling factor for the O2-continuum [1] | |||
| 14878 | \param CLin scaling factor for the O2-line strengths [1] | |||
| 14879 | \param CWin scaling factor for the O2-line widths [1] | |||
| 14880 | \param COin scaling factor for the O2-line coupling [1] | |||
| 14881 | \param model allows user defined input parameter set | |||
| 14882 | (CCin, CLin, CWin, and COin)<br> or choice of | |||
| 14883 | pre-defined parameters of specific models (see note below). | |||
| 14884 | \param f_grid predefined frequency grid [Hz] | |||
| 14885 | \param abs_p predefined pressure [Pa] | |||
| 14886 | \param abs_t predefined temperature grid [K] | |||
| 14887 | \param abs_h2o H2O volume mixing ratio profile [1] | |||
| 14888 | \param vmr O2 volume mixing ratio profile [1] | |||
| 14889 | ||||
| 14890 | \note Except for model 'user' the input parameters CCin, CLin, CWin, and COin | |||
| 14891 | are neglected (model dominates over parameters).<br> | |||
| 14892 | Allowed models: 'MPM93', 'MPM93Lines', 'MPM93Continuum', 'MPM93NoCoupling', | |||
| 14893 | 'MPM93NoCutoff', and 'user'. See the user guide for detailed explanations. | |||
| 14894 | ||||
| 14895 | \remark Reference: H. J. Liebe and G. A. Hufford and M. G. Cotton,<br> | |||
| 14896 | <i>Propagation modeling of moist air and suspended water/ice | |||
| 14897 | particles at frequencies below 1000 GHz</i>,<br> | |||
| 14898 | AGARD 52nd Specialists Meeting of the Electromagnetic Wave | |||
| 14899 | Propagation Panel,<br> Palma de Mallorca, Spain, 1993, May 17-21 | |||
| 14900 | ||||
| 14901 | \author Thomas Kuhn | |||
| 14902 | \date 2001-11-05 | |||
| 14903 | */ | |||
| 14904 | ||||
| 14905 | void MPM93O2AbsModel (MatrixView pxsec, | |||
| 14906 | const Numeric CCin, // continuum scale factor | |||
| 14907 | const Numeric CLin, // line strength scale factor | |||
| 14908 | const Numeric CWin, // line broadening scale factor | |||
| 14909 | const Numeric COin, // line coupling scale factor | |||
| 14910 | const String& model, | |||
| 14911 | ConstVectorView f_grid, | |||
| 14912 | ConstVectorView abs_p, | |||
| 14913 | ConstVectorView abs_t, | |||
| 14914 | ConstVectorView abs_h2o, // VMR 0f H2O | |||
| 14915 | ConstVectorView vmr, // VMR of O2 | |||
| 14916 | const Verbosity& verbosity) | |||
| 14917 | { | |||
| 14918 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 14919 | ||||
| 14920 | // | |||
| 14921 | // Coefficients are from Liebe et al., AGARD CP-May93, Paper 3/1-10 | |||
| 14922 | // 0 1 2 3 4 5 6 | |||
| 14923 | // f0 a1 a2 a3 a4 a5 a6 | |||
| 14924 | // [GHz] [kHz/hPa] [1] [MHz/hPa] [1] [10³/hPa] | |||
| 14925 | const Numeric mpm93[44][7] = { | |||
| 14926 | { 50.474238, 0.094, 9.694, 0.890, 0.0, 0.240, 0.790}, // 0 | |||
| 14927 | { 50.987749, 0.246, 8.694, 0.910, 0.0, 0.220, 0.780}, // 1 | |||
| 14928 | { 51.503350, 0.608, 7.744, 0.940, 0.0, 0.197, 0.774}, // 2 | |||
| 14929 | { 52.021410, 1.414, 6.844, 0.970, 0.0, 0.166, 0.764}, // 3 | |||
| 14930 | { 52.542394, 3.102, 6.004, 0.990, 0.0, 0.136, 0.751}, // 4 | |||
| 14931 | { 53.066907, 6.410, 5.224, 1.020, 0.0, 0.131, 0.714}, // 5 | |||
| 14932 | { 53.595749, 12.470, 4.484, 1.050, 0.0, 0.230, 0.584}, // 6 | |||
| 14933 | { 54.130000, 22.800, 3.814, 1.070, 0.0, 0.335, 0.431}, // 7 | |||
| 14934 | { 54.671159, 39.180, 3.194, 1.100, 0.0, 0.374, 0.305}, // 8 | |||
| 14935 | { 55.221367, 63.160, 2.624, 1.130, 0.0, 0.258, 0.339}, // 9 | |||
| 14936 | { 55.783802, 95.350, 2.119, 1.170, 0.0, -0.166, 0.705}, // 10 | |||
| 14937 | { 56.264775, 54.890, 0.015, 1.730, 0.0, 0.390, -0.113}, // 11 | |||
| 14938 | { 56.363389, 134.400, 1.660, 1.200, 0.0, -0.297, 0.753}, // 12 | |||
| 14939 | { 56.968206, 176.300, 1.260, 1.240, 0.0, -0.416, 0.742}, // 13 | |||
| 14940 | { 57.612484, 214.100, 0.915, 1.280, 0.0, -0.613, 0.697}, // 14 | |||
| 14941 | { 58.323877, 238.600, 0.626, 1.330, 0.0, -0.205, 0.051}, // 15 | |||
| 14942 | { 58.446590, 145.700, 0.084, 1.520, 0.0, 0.748, -0.146}, // 16 | |||
| 14943 | { 59.164207, 240.400, 0.391, 1.390, 0.0, -0.722, 0.266}, // 17 | |||
| 14944 | { 59.590983, 211.200, 0.212, 1.430, 0.0, 0.765, -0.090}, // 18 | |||
| 14945 | { 60.306061, 212.400, 0.212, 1.450, 0.0, -0.705, 0.081}, // 19 | |||
| 14946 | { 60.434776, 246.100, 0.391, 1.360, 0.0, 0.697, -0.324}, // 20 | |||
| 14947 | { 61.150560, 250.400, 0.626, 1.310, 0.0, 0.104, -0.067}, // 21 | |||
| 14948 | { 61.800154, 229.800, 0.915, 1.270, 0.0, 0.570, -0.761}, // 22 | |||
| 14949 | { 62.411215, 193.300, 1.260, 1.230, 0.0, 0.360, -0.777}, // 23 | |||
| 14950 | { 62.486260, 151.700, 0.083, 1.540, 0.0, -0.498, 0.097}, // 24 | |||
| 14951 | { 62.997977, 150.300, 1.665, 1.200, 0.0, 0.239, -0.768}, // 25 | |||
| 14952 | { 63.568518, 108.700, 2.115, 1.170, 0.0, 0.108, -0.706}, // 26 | |||
| 14953 | { 64.127767, 73.350, 2.620, 1.130, 0.0, -0.311, -0.332}, // 27 | |||
| 14954 | { 64.678903, 46.350, 3.195, 1.100, 0.0, -0.421, -0.298}, // 28 | |||
| 14955 | { 65.224071, 27.480, 3.815, 1.070, 0.0, -0.375, -0.423}, // 29 | |||
| 14956 | { 65.764772, 15.300, 4.485, 1.050, 0.0, -0.267, -0.575}, // 30 | |||
| 14957 | { 66.302091, 8.009, 5.225, 1.020, 0.0, -0.168, -0.700}, // 31 | |||
| 14958 | { 66.836830, 3.946, 6.005, 0.990, 0.0, -0.169, -0.735}, // 32 | |||
| 14959 | { 67.369598, 1.832, 6.845, 0.970, 0.0, -0.200, -0.744}, // 33 | |||
| 14960 | { 67.900867, 0.801, 7.745, 0.940, 0.0, -0.228, -0.753}, // 34 | |||
| 14961 | { 68.431005, 0.330, 8.695, 0.920, 0.0, -0.240, -0.760}, // 35 | |||
| 14962 | { 68.960311, 0.128, 9.695, 0.900, 0.0, -0.250, -0.765}, // 36 | |||
| 14963 | { 118.750343, 94.500, 0.009, 1.630, 0.0, -0.036, 0.009}, // 37 | |||
| 14964 | { 368.498350, 6.790, 0.049, 1.920, 0.6, 0.000, 0.000}, // 38 | |||
| 14965 | { 424.763124, 63.800, 0.044, 1.930, 0.6, 0.000, 0.000}, // 39 | |||
| 14966 | { 487.249370, 23.500, 0.049, 1.920, 0.6, 0.000, 0.000}, // 40 | |||
| 14967 | { 715.393150, 9.960, 0.145, 1.810, 0.6, 0.000, 0.000}, // 41 | |||
| 14968 | { 773.839675, 67.100, 0.130, 1.820, 0.6, 0.000, 0.000}, // 42 | |||
| 14969 | { 834.145330, 18.000, 0.147, 1.810 , 0.6, 0.000, 0.000}}; // 43 | |||
| 14970 | // number of lines of Liebe O2-line catalog (0-43 lines) | |||
| 14971 | const Index i_first = 0; | |||
| 14972 | const Index i_last = 43; // all the spec. lines up to 1THz | |||
| 14973 | // const Index i_last = 37; // only the 60GHz complex + 118GHz line | |||
| 14974 | ||||
| 14975 | ||||
| 14976 | // --------- STANDARD MODEL PARAMETERS --------------------------------------------------- | |||
| 14977 | // standard values for the MPM87 model (Radio Science, 20(5), 1985, 1069): | |||
| 14978 | const Numeric CC_MPM93 = 1.00000; | |||
| 14979 | const Numeric CL_MPM93 = 1.00000; | |||
| 14980 | const Numeric CW_MPM93 = 1.00000; | |||
| 14981 | const Numeric CO_MPM93 = 1.00000; | |||
| 14982 | int AppCutoff = 0; | |||
| 14983 | // --------------------------------------------------------------------------------------- | |||
| 14984 | ||||
| 14985 | ||||
| 14986 | // select the parameter set (!!model dominates values!!): | |||
| 14987 | Numeric CC, CL, CW, CO; | |||
| 14988 | if ( model == "MPM93" ) | |||
| 14989 | { | |||
| 14990 | CC = CC_MPM93; | |||
| 14991 | CL = CL_MPM93; | |||
| 14992 | CW = CW_MPM93; | |||
| 14993 | CO = CO_MPM93; | |||
| 14994 | } | |||
| 14995 | else if ( model == "MPM93Lines" ) | |||
| 14996 | { | |||
| 14997 | CC = 0.000; | |||
| 14998 | CL = CL_MPM93; | |||
| 14999 | CW = CW_MPM93; | |||
| 15000 | CO = CO_MPM93; | |||
| 15001 | } | |||
| 15002 | else if ( model == "MPM93Continuum" ) | |||
| 15003 | { | |||
| 15004 | CC = CC_MPM93; | |||
| 15005 | CL = 0.000; | |||
| 15006 | CW = 0.000; | |||
| 15007 | CO = 0.000; | |||
| 15008 | } | |||
| 15009 | else if ( model == "MPM93NoCoupling" ) | |||
| 15010 | { | |||
| 15011 | CC = CC_MPM93; | |||
| 15012 | CL = CL_MPM93; | |||
| 15013 | CW = CW_MPM93; | |||
| 15014 | CO = 0.000; | |||
| 15015 | } | |||
| 15016 | else if ( model == "MPM93NoCutoff" ) | |||
| 15017 | { | |||
| 15018 | // !!ATTENTION!! | |||
| 15019 | // In the window regions the total absorption can get negative values. | |||
| 15020 | // So be carefull with this selection! | |||
| 15021 | CC = CC_MPM93; | |||
| 15022 | CL = CL_MPM93; | |||
| 15023 | CW = CW_MPM93; | |||
| 15024 | CO = CO_MPM93; | |||
| 15025 | AppCutoff = 1; | |||
| 15026 | } | |||
| 15027 | else if ( model == "user" ) | |||
| 15028 | { | |||
| 15029 | CC = CCin; | |||
| 15030 | CL = CLin; | |||
| 15031 | CW = CWin; | |||
| 15032 | CO = COin; | |||
| 15033 | } | |||
| 15034 | else | |||
| 15035 | { | |||
| 15036 | ostringstream os; | |||
| 15037 | os << "O2-MPM93: ERROR! Wrong model values given.\n" | |||
| 15038 | << "Valid models are: 'MPM93' 'MPM93Lines' 'MPM93Continuum' 'MPM93NoCoupling' 'MPM93NoCutoff'" | |||
| 15039 | << "and 'user'" << '\n'; | |||
| 15040 | throw runtime_error(os.str()); | |||
| 15041 | } | |||
| 15042 | out3 << "O2-MPM93: (model=" << model << ") parameter values in use:\n" | |||
| 15043 | << " CC = " << CC << "\n" | |||
| 15044 | << " CL = " << CL << "\n" | |||
| 15045 | << " CW = " << CW << "\n" | |||
| 15046 | << " CO = " << CO << "\n"; | |||
| 15047 | ||||
| 15048 | ||||
| 15049 | // const = VMR * ISORATIO = 0.20946 * 0.99519 | |||
| 15050 | // this constant is already incorporated into the line strength, so we | |||
| 15051 | // have top devide the line strength by this value since arts multiplies pxsec | |||
| 15052 | // by these variables later in abs_coefCalc. | |||
| 15053 | const Numeric VMRISO = 0.2085; | |||
| 15054 | ||||
| 15055 | // O2 continuum parameters of MPM93: | |||
| 15056 | const Numeric S0 = 6.140e-5; // line strength [ppm] | |||
| 15057 | const Numeric G0 = 0.560e-3; // line width [GHz/hPa] | |||
| 15058 | const Numeric X0 = 0.800; // temperature dependence of line width [1] | |||
| 15059 | ||||
| 15060 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 15061 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 15062 | ||||
| 15063 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 15064 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 15064 , "n_p==abs_t.nelem()") : (void)0); | |||
| 15065 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 15065 , "n_p==vmr.nelem()") : (void)0); | |||
| 15066 | ||||
| 15067 | // Check that dimensions of pxsec are consistent with n_f | |||
| 15068 | // and n_p. It should be [n_f,n_p]: | |||
| 15069 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 15069 , "n_f==pxsec.nrows()") : (void)0); | |||
| 15070 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 15070 , "n_p==pxsec.ncols()") : (void)0); | |||
| 15071 | ||||
| 15072 | // Loop pressure/temperature (pressure in hPa therefore the factor 0.01) | |||
| 15073 | for ( Index i=0; i<n_p; ++i ) | |||
| 15074 | { | |||
| 15075 | // check if O2-VMR is exactly zero (caused by zeropadding), then return 0. | |||
| 15076 | if (vmr[i] == 0.) | |||
| 15077 | { | |||
| 15078 | pxsec(joker, i) = 0.; | |||
| 15079 | continue; | |||
| 15080 | } | |||
| 15081 | ||||
| 15082 | // check if O2-VMR will cause an underflow due to division by zero: | |||
| 15083 | if (vmr[i] < VMRCalcLimit) | |||
| 15084 | { | |||
| 15085 | ostringstream os; | |||
| 15086 | os << "ERROR: MPM93 O2 full absorption model has detected a O2 volume mixing ratio of " | |||
| 15087 | << vmr[i] << " which is below the threshold of " << VMRCalcLimit << ".\n" | |||
| 15088 | << "Therefore no calculation is performed.\n"; | |||
| 15089 | throw runtime_error(os.str()); | |||
| 15090 | return; | |||
| 15091 | } | |||
| 15092 | ||||
| 15093 | // relative inverse temperature [1] | |||
| 15094 | Numeric theta = (300.0 / abs_t[i]); | |||
| 15095 | // H2O partial pressure [hPa] | |||
| 15096 | Numeric pwv = Pa_to_hPa * abs_p[i] * abs_h2o[i]; | |||
| 15097 | // dry air partial pressure [hPa] | |||
| 15098 | Numeric pda = (Pa_to_hPa * abs_p[i]) - pwv; | |||
| 15099 | // here the total pressure is devided by the O2 vmr for the | |||
| 15100 | // P_dry calculation because we calculate pxsec and not abs: abs = vmr * pxsec | |||
| 15101 | // old version without VMRISO: Numeric pda_dummy = pda / vmr[i]; | |||
| 15102 | Numeric pda_dummy = pda; | |||
| 15103 | // O2 continuum strength [ppm] | |||
| 15104 | Numeric strength_cont = S0 * pda_dummy * pow( theta, (Numeric)2. ); | |||
| 15105 | // O2 continuum pseudo line broadening [GHz] | |||
| 15106 | Numeric gam_cont = G0 * (pwv+pda) * pow( theta, X0 ); // GHz | |||
| 15107 | ||||
| 15108 | // Loop over input frequency | |||
| 15109 | for ( Index s=0; s<n_f; ++s ) | |||
| 15110 | { | |||
| 15111 | // input frequency in [GHz] | |||
| 15112 | Numeric ff = f_grid[s] * Hz_to_GHz; | |||
| 15113 | // O2 continuum absorption [1/m] | |||
| 15114 | // cross section: pxsec = absorption / var | |||
| 15115 | // the vmr of O2 will be multiplied at the stage of absorption calculation: | |||
| 15116 | Numeric Nppc = CC * strength_cont * ff * gam_cont / | |||
| 15117 | ( pow( ff, (Numeric)2.) | |||
| 15118 | + pow( gam_cont, (Numeric)2.) ); | |||
| 15119 | ||||
| 15120 | // Loop over MPM93 O2 spectral lines: | |||
| 15121 | Numeric Nppl = 0.0; | |||
| 15122 | for ( Index l = i_first; l <= i_last; ++l ) | |||
| 15123 | { | |||
| 15124 | // line strength [ppm] S=A(1,I)*P*V**3*EXP(A(2,I)*(1.-V))*1.E-6 | |||
| 15125 | Numeric strength = CL * 1.000e-6 * pda_dummy * | |||
| 15126 | mpm93[l][1] / mpm93[l][0] * | |||
| 15127 | pow(theta, (Numeric)3.) * exp(mpm93[l][2]*(1.0-theta)); | |||
| 15128 | // line broadening parameter [GHz] | |||
| 15129 | Numeric gam = CW * ( mpm93[l][3] * 0.001 * | |||
| 15130 | ( ( pda * pow(theta, ((Numeric)0.8-mpm93[l][4]))) + | |||
| 15131 | (1.10 * pwv * theta) ) ); | |||
| 15132 | // line mixing parameter [1] | |||
| 15133 | // if (l < 11) CD = 1.1000; | |||
| 15134 | Numeric delta = CO * ( (mpm93[l][5] + mpm93[l][6] * theta) * | |||
| 15135 | (pda+pwv) * pow(theta, (Numeric)0.8) | |||
| 15136 | * (Numeric)0.001 ); | |||
| 15137 | // absorption [dB/km] like in the original MPM93 | |||
| 15138 | Nppl += strength * MPMLineShapeO2Function(gam, mpm93[l][0], ff, delta); | |||
| 15139 | } | |||
| 15140 | // in MPM93 there is a cutoff for O2 line absorption if abs_l < 0 | |||
| 15141 | // absorption cannot be less than 0 according to MPM93 philosophy. | |||
| 15142 | if (AppCutoff == 0) | |||
| 15143 | { | |||
| 15144 | if (Nppl < 0.000) Nppl = 0.0000;// <---!!IMPORTANT FEATURE!! | |||
| 15145 | } | |||
| 15146 | // | |||
| 15147 | // O2 line absorption [1/m] | |||
| 15148 | // cross section: pxsec = absorption / var | |||
| 15149 | // the vmr of O2 will be multiplied at the stage of absorption calculation: | |||
| 15150 | pxsec(s,i) += dB_km_to_1_m * 0.1820 * ff * (Nppl+Nppc) / VMRISO; | |||
| 15151 | } | |||
| 15152 | } | |||
| 15153 | return; | |||
| 15154 | } | |||
| 15155 | // | |||
| 15156 | // ################################################################################# | |||
| 15157 | // | |||
| 15158 | //! Oxygen complex at 60 GHz plus mm O2 lines plus O2 continuum | |||
| 15159 | /*! | |||
| 15160 | REFERENCES FOR EQUATIONS AND COEFFICIENTS: | |||
| 15161 | P.W. Rosenkranz, CHAP. 2 and appendix, in ATMOSPHERIC REMOTE SENSING | |||
| 15162 | BY MICROWAVE RADIOMETRY (M.A. Janssen, ed., 1993). | |||
| 15163 | H.J. Liebe et al, JQSRT V.48, PP.629-643 (1992). | |||
| 15164 | M.J. Schwartz, Ph.D. thesis, M.I.T. (1997). | |||
| 15165 | SUBMILLIMETER LINE INTENSITIES FROM HITRAN96. | |||
| 15166 | This version differs from Liebe's MPM92 in two significant respects: | |||
| 15167 | 1. It uses the modification of the 1- line width temperature dependence | |||
| 15168 | recommended by Schwartz: (1/T). | |||
| 15169 | 2. It uses the same temperature dependence (X) for submillimeter | |||
| 15170 | line widths as in the 60 GHz band: (1/T)**0.8 | |||
| 15171 | ||||
| 15172 | history: | |||
| 15173 | 05-01-95 P. Rosenkranz | |||
| 15174 | 11-05-97 P. Rosenkranz - 1- line modification. | |||
| 15175 | 12-16-98 pwr - updated submm freq's and intensities from HITRAN96 | |||
| 15176 | ||||
| 15177 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 15178 | O2 according to the P. W. Rosenkranz, 1993 [1/m] | |||
| 15179 | \param CCin O2-continuum scale factor [1] | |||
| 15180 | \param CLin O2 line strength scale factor [1] | |||
| 15181 | \param CWin O2 line broadening scale factor [1] | |||
| 15182 | \param COin O2 line coupling scale factor [1] | |||
| 15183 | \param model allows user defined input parameter set | |||
| 15184 | (CCin, CLin, CWin, and COin)<br> or choice of | |||
| 15185 | pre-defined parameters of specific models (see note below). | |||
| 15186 | \param version determines model version: 1988, 1993, 1998 | |||
| 15187 | \param f_grid predefined frequency grid [Hz] | |||
| 15188 | \param abs_p predefined pressure [Pa] | |||
| 15189 | \param abs_t predefined temperature grid [K] | |||
| 15190 | \param vmrh2o H2O volume mixing ratio profile [1] | |||
| 15191 | \param vmr O2 volume mixing ratio profile [1] | |||
| 15192 | ||||
| 15193 | \note Except for model 'user' the input parameters CCin, CLin, CWin, and COin | |||
| 15194 | are neglected (model dominates over parameters).<br> | |||
| 15195 | Allowed models:<br> | |||
| 15196 | 'Rosenkranz', 'RosenkranzLines', 'RosenkranzContinuum', | |||
| 15197 | 'RosenkranzNoCoupling', and 'user'. <br> | |||
| 15198 | For the parameter version the following three string values are allowed: | |||
| 15199 | 'PWR88', 'PWR93', 'PWR98'.<br> | |||
| 15200 | See the user guide for detailed explanations. | |||
| 15201 | ||||
| 15202 | \remark Reference: P. W. Rosenkranz, Chapter 2, in M. A. Janssen, <br> | |||
| 15203 | <I>Atmospheric Remote Sensing by Microwave Radiometry</i>,<br> | |||
| 15204 | John Wiley & Sons, Inc., 1993. | |||
| 15205 | ||||
| 15206 | \author Thomas Kuhn | |||
| 15207 | \date 2001-11-05 | |||
| 15208 | */ | |||
| 15209 | ||||
| 15210 | void PWR93O2AbsModel (MatrixView pxsec, | |||
| 15211 | const Numeric CCin, // model parameter | |||
| 15212 | const Numeric CLin, // model parameter | |||
| 15213 | const Numeric CWin, // model parameter | |||
| 15214 | const Numeric COin, // model parameter | |||
| 15215 | const String& model, // model selection string | |||
| 15216 | const String& version, // PWR98, PWR93 or PWR88 | |||
| 15217 | ConstVectorView f_grid, | |||
| 15218 | ConstVectorView abs_p, | |||
| 15219 | ConstVectorView abs_t, | |||
| 15220 | ConstVectorView vmrh2o, | |||
| 15221 | ConstVectorView vmr, | |||
| 15222 | const Verbosity& verbosity) | |||
| 15223 | { | |||
| 15224 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 15225 | ||||
| 15226 | const Index n_lines = 40; // all O2 lines in this model (range: 50-850 GHz) | |||
| 15227 | // | |||
| 15228 | // lines are arranged 1-,1+,3-,3+,etc. in spin-rotation spectrum | |||
| 15229 | // line center frequency in [GHz] | |||
| 15230 | const Numeric F93[n_lines] = { 118.7503, 56.2648, 62.4863, 58.4466, // 00-03 | |||
| 15231 | 60.3061, 59.5910, 59.1642, 60.4348, // 04-07 | |||
| 15232 | 58.3239, 61.1506, 57.6125, 61.8002, // 08-11 | |||
| 15233 | 56.9682, 62.4112, 56.3634, 62.9980, // 12-15 | |||
| 15234 | 55.7838, 63.5685, 55.2214, 64.1278, // 16-19 | |||
| 15235 | 54.6712, 64.6789, 54.1300, 65.2241, // 20-23 | |||
| 15236 | 53.5957, 65.7648, 53.0669, 66.3021, // 24-27 | |||
| 15237 | 52.5424, 66.8368, 52.0214, 67.3696, // 28-31 | |||
| 15238 | 51.5034, 67.9009, 368.4984, 424.7631, // 32-35 | |||
| 15239 | 487.2494, 715.3932, 773.8397, 834.1453}; // 36-39 | |||
| 15240 | ||||
| 15241 | // intensities in the submm range are updated according to HITRAN96 | |||
| 15242 | const Numeric F98[n_lines] = { 118.7503, 56.2648, 62.4863, 58.4466, 60.3061, 59.5910, | |||
| 15243 | 59.1642, 60.4348, 58.3239, 61.1506, 57.6125, 61.8002, | |||
| 15244 | 56.9682, 62.4112, 56.3634, 62.9980, 55.7838, 63.5685, | |||
| 15245 | 55.2214, 64.1278, 54.6712, 64.6789, 54.1300, 65.2241, | |||
| 15246 | 53.5957, 65.7648, 53.0669, 66.3021, 52.5424, 66.8368, | |||
| 15247 | 52.0214, 67.3696, 51.5034, 67.9009, 368.4984, 424.7632, | |||
| 15248 | 487.2494, 715.3931, 773.8397, 834.1458}; | |||
| 15249 | ||||
| 15250 | ||||
| 15251 | // line strength at T=300K in [cm² * Hz] | |||
| 15252 | const Numeric S93[n_lines] = { 0.2936E-14, 0.8079E-15, 0.2480E-14, 0.2228E-14, | |||
| 15253 | 0.3351E-14, 0.3292E-14, 0.3721E-14, 0.3891E-14, | |||
| 15254 | 0.3640E-14, 0.4005E-14, 0.3227E-14, 0.3715E-14, | |||
| 15255 | 0.2627E-14, 0.3156E-14, 0.1982E-14, 0.2477E-14, | |||
| 15256 | 0.1391E-14, 0.1808E-14, 0.9124E-15, 0.1230E-14, | |||
| 15257 | 0.5603E-15, 0.7842E-15, 0.3228E-15, 0.4689E-15, | |||
| 15258 | 0.1748E-15, 0.2632E-15, 0.8898E-16, 0.1389E-15, | |||
| 15259 | 0.4264E-16, 0.6899E-16, 0.1924E-16, 0.3229E-16, | |||
| 15260 | 0.8191E-17, 0.1423E-16, 0.6460E-15, 0.7047E-14, | |||
| 15261 | 0.3011E-14, 0.1826E-14, 0.1152E-13, 0.3971E-14}; | |||
| 15262 | ||||
| 15263 | // intensities in the submm range are updated according to HITRAN96 | |||
| 15264 | const Numeric S98[n_lines] = { 0.2936E-14, 0.8079E-15, 0.2480E-14, 0.2228E-14, | |||
| 15265 | 0.3351E-14, 0.3292E-14, 0.3721E-14, 0.3891E-14, | |||
| 15266 | 0.3640E-14, 0.4005E-14, 0.3227E-14, 0.3715E-14, | |||
| 15267 | 0.2627E-14, 0.3156E-14, 0.1982E-14, 0.2477E-14, | |||
| 15268 | 0.1391E-14, 0.1808E-14, 0.9124E-15, 0.1230E-14, | |||
| 15269 | 0.5603E-15, 0.7842E-15, 0.3228E-15, 0.4689E-15, | |||
| 15270 | 0.1748E-15, 0.2632E-15, 0.8898E-16, 0.1389E-15, | |||
| 15271 | 0.4264E-16, 0.6899E-16, 0.1924E-16, 0.3229E-16, | |||
| 15272 | 0.8191E-17, 0.1423E-16, 0.6494E-15, 0.7083E-14, | |||
| 15273 | 0.3025E-14, 0.1835E-14, 0.1158E-13, 0.3993E-14}; | |||
| 15274 | ||||
| 15275 | // temperature exponent of the line strength in [1] | |||
| 15276 | const Numeric BE[n_lines] = { 0.009, 0.015, 0.083, 0.084, | |||
| 15277 | 0.212, 0.212, 0.391, 0.391, | |||
| 15278 | 0.626, 0.626, 0.915, 0.915, | |||
| 15279 | 1.260, 1.260, 1.660, 1.665, | |||
| 15280 | 2.119, 2.115, 2.624, 2.625, | |||
| 15281 | 3.194, 3.194, 3.814, 3.814, | |||
| 15282 | 4.484, 4.484, 5.224, 5.224, | |||
| 15283 | 6.004, 6.004, 6.844, 6.844, | |||
| 15284 | 7.744, 7.744, 0.048, 0.044, | |||
| 15285 | 0.049, 0.145, 0.141, 0.145}; | |||
| 15286 | ||||
| 15287 | // widths in MHz/mbar for the O2 continuum | |||
| 15288 | const Numeric WB300 = 0.56; // [MHz/mbar]=[MHz/hPa] | |||
| 15289 | const Numeric X = 0.80; // [1] | |||
| 15290 | ||||
| 15291 | // line width parameter [GHz/bar] | |||
| 15292 | const Numeric W300[n_lines] = { 1.630, 1.646, 1.468, 1.449, | |||
| 15293 | 1.382, 1.360, 1.319, 1.297, | |||
| 15294 | 1.266, 1.248, 1.221, 1.207, | |||
| 15295 | 1.181, 1.171, 1.144, 1.139, | |||
| 15296 | 1.110, 1.108, 1.079, 1.078, | |||
| 15297 | 1.050, 1.050, 1.020, 1.020, | |||
| 15298 | 1.000, 1.000, 0.970, 0.970, | |||
| 15299 | 0.940, 0.940, 0.920, 0.920, | |||
| 15300 | 0.890, 0.890, 1.920, 1.920, | |||
| 15301 | 1.920, 1.810, 1.810, 1.810}; | |||
| 15302 | ||||
| 15303 | // y parameter for the calculation of Y [1/bar] | |||
| 15304 | const Numeric Y93[n_lines] = { -0.0233, 0.2408, -0.3486, 0.5227, | |||
| 15305 | -0.5430, 0.5877, -0.3970, 0.3237, | |||
| 15306 | -0.1348, 0.0311, 0.0725, -0.1663, | |||
| 15307 | 0.2832, -0.3629, 0.3970, -0.4599, | |||
| 15308 | 0.4695, -0.5199, 0.5187, -0.5597, | |||
| 15309 | 0.5903, -0.6246, 0.6656, -0.6942, | |||
| 15310 | 0.7086, -0.7325, 0.7348, -0.7546, | |||
| 15311 | 0.7702, -0.7864, 0.8083, -0.8210, | |||
| 15312 | 0.8439, -0.8529, 0.0000, 0.0000, | |||
| 15313 | 0.0000, 0.0000, 0.0000, 0.0000}; | |||
| 15314 | ||||
| 15315 | // y parameter for the calculation of Y [1/bar]. | |||
| 15316 | // These values are from P. W. Rosenkranz, Interference coefficients for the | |||
| 15317 | // overlapping oxygen lines in air, JQSRT, 1988, Volume 39, 287-297. | |||
| 15318 | const Numeric Y88[n_lines] = { -0.0244, 0.2772, -0.4068, 0.6270, | |||
| 15319 | -0.6183, 0.6766, -0.4119, 0.3290, | |||
| 15320 | 0.0317, -0.1591, 0.1145, -0.2068, | |||
| 15321 | 0.3398, -0.4158, 0.3922, -0.4482, | |||
| 15322 | 0.4011, -0.4442, 0.4339, -0.4687, | |||
| 15323 | 0.4783, -0.5074, 0.5157, -0.5403, | |||
| 15324 | 0.5400, -0.5610, 0.5719, -0.5896, | |||
| 15325 | 0.6046, -0.6194, 0.6347, -0.6468, | |||
| 15326 | 0.6627, -0.6718, 0.0000, 0.0000, | |||
| 15327 | 0.0000, 0.0000, 0.0000, 0.0000}; | |||
| 15328 | ||||
| 15329 | // v parameter for the calculation of Y [1/bar] | |||
| 15330 | const Numeric V[n_lines] ={ 0.0079, -0.0978, 0.0844, -0.1273, | |||
| 15331 | 0.0699, -0.0776, 0.2309, -0.2825, | |||
| 15332 | 0.0436, -0.0584, 0.6056, -0.6619, | |||
| 15333 | 0.6451, -0.6759, 0.6547, -0.6675, | |||
| 15334 | 0.6135, -0.6139, 0.2952, -0.2895, | |||
| 15335 | 0.2654, -0.2590, 0.3750, -0.3680, | |||
| 15336 | 0.5085, -0.5002, 0.6206, -0.6091, | |||
| 15337 | 0.6526, -0.6393, 0.6640, -0.6475, | |||
| 15338 | 0.6729, -0.6545, 0.0000, 0.0000, | |||
| 15339 | 0.0000, 0.0000, 0.0000, 0.0000}; | |||
| 15340 | // range of lines to take into account for the line absorption part | |||
| 15341 | const Index first_line = 0; // first line for calculation | |||
| 15342 | const Index last_line = 39; // last line for calculation | |||
| 15343 | ||||
| 15344 | // --------- STANDARD MODEL PARAMETERS --------------------------------------------------- | |||
| 15345 | // standard values for the Rosenkranz model | |||
| 15346 | // (P. W. Rosenkranz, Chapter 2, pp 74, in M. A. Janssen, | |||
| 15347 | // "Atmospheric Remote Sensing by Microwave Radiometry", John Wiley & Sons, Inc., 1993): | |||
| 15348 | const Numeric CC_PWR93 = 1.00000; | |||
| 15349 | const Numeric CL_PWR93 = 1.00000; | |||
| 15350 | const Numeric CW_PWR93 = 1.00000; | |||
| 15351 | const Numeric CO_PWR93 = 1.00000; | |||
| 15352 | // --------------------------------------------------------------------------------------- | |||
| 15353 | ||||
| 15354 | ||||
| 15355 | // select the parameter set (!!model dominates values!!): | |||
| 15356 | Numeric CC, CL, CW, CO, Y300[n_lines], S300[n_lines], F[n_lines]; | |||
| 15357 | // FIXME int oldnewflag = 0; | |||
| 15358 | ||||
| 15359 | if ( model == "Rosenkranz" ) | |||
| 15360 | { | |||
| 15361 | CC = CC_PWR93; | |||
| 15362 | CL = CL_PWR93; | |||
| 15363 | CW = CW_PWR93; | |||
| 15364 | CO = CO_PWR93; | |||
| 15365 | } | |||
| 15366 | else if ( model == "RosenkranzLines" ) | |||
| 15367 | { | |||
| 15368 | CC = 0.000; | |||
| 15369 | CL = CL_PWR93; | |||
| 15370 | CW = CW_PWR93; | |||
| 15371 | CO = CO_PWR93; | |||
| 15372 | } | |||
| 15373 | else if ( model == "RosenkranzContinuum" ) | |||
| 15374 | { | |||
| 15375 | CC = CC_PWR93; | |||
| 15376 | CL = 0.000; | |||
| 15377 | CW = 0.000; | |||
| 15378 | CO = 0.000; | |||
| 15379 | } | |||
| 15380 | else if ( model == "RosenkranzNoCoupling" ) | |||
| 15381 | { | |||
| 15382 | CC = CC_PWR93; | |||
| 15383 | CL = CL_PWR93; | |||
| 15384 | CW = CW_PWR93; | |||
| 15385 | CO = 0.000; | |||
| 15386 | } | |||
| 15387 | else if ( model == "user" ) | |||
| 15388 | { | |||
| 15389 | CC = CCin; | |||
| 15390 | CL = CLin; | |||
| 15391 | CW = CWin; | |||
| 15392 | CO = COin; | |||
| 15393 | } | |||
| 15394 | else | |||
| 15395 | { | |||
| 15396 | ostringstream os; | |||
| 15397 | os << "O2-PWR93: ERROR! Wrong model values given.\n" | |||
| 15398 | << "Valid models are: 'Rosenkranz', 'RosenkranzLines', RosenkranzContinuum, " | |||
| 15399 | << "'RosenkranzNoCoupling', and 'user'" << '\n'; | |||
| 15400 | throw runtime_error(os.str()); | |||
| 15401 | } | |||
| 15402 | out3 << "O2-PWR93: (model=" << model << ") parameter values in use:\n" | |||
| 15403 | << " CC = " << CC << "\n" | |||
| 15404 | << " CL = " << CL << "\n" | |||
| 15405 | << " CW = " << CW << "\n" | |||
| 15406 | << " CO = " << CO << "\n"; | |||
| 15407 | ||||
| 15408 | ||||
| 15409 | // select version dependent parameters | |||
| 15410 | if ( version == "PWR88" ) { | |||
| 15411 | for ( Index i=0; i<n_lines; ++i ) | |||
| 15412 | { | |||
| 15413 | F[i] = F93[i]; | |||
| 15414 | S300[i] = S93[i]; | |||
| 15415 | Y300[i] = Y88[i]; | |||
| 15416 | }; | |||
| 15417 | } | |||
| 15418 | else if ( version == "PWR93" ) { | |||
| 15419 | for ( Index i=0; i<n_lines; ++i ) | |||
| 15420 | { | |||
| 15421 | F[i] = F93[i]; | |||
| 15422 | S300[i] = S93[i]; | |||
| 15423 | Y300[i] = Y93[i]; | |||
| 15424 | }; | |||
| 15425 | } | |||
| 15426 | else if ( version == "PWR98" ) { | |||
| 15427 | for ( Index i=0; i<n_lines; ++i ) | |||
| 15428 | { | |||
| 15429 | F[i] = F98[i]; | |||
| 15430 | S300[i] = S98[i]; | |||
| 15431 | Y300[i] = Y93[i]; | |||
| 15432 | }; | |||
| 15433 | } | |||
| 15434 | else | |||
| 15435 | { | |||
| 15436 | ostringstream os; | |||
| 15437 | os << "O2-PWR93/PWR88: ERROR! Wrong version is selected.\n" | |||
| 15438 | << "Valid versions are:\n" | |||
| 15439 | << " 'PWR98' updates of F and S to HISTRAN96 and M.J.Schwartz, MIT, 1997\n" | |||
| 15440 | << " suggestions implemented.\n" | |||
| 15441 | << " 'PWR93' for the oxygen absorption model described in \n" | |||
| 15442 | << " P. W. Rosenkranz, Chapter 2, in M. A. Janssen,\n" | |||
| 15443 | << " Atmospheric Remote Sensing by Microwave Radiometry,\n" | |||
| 15444 | << " John Wiley & Sons, Inc., 1993.\n" | |||
| 15445 | << " 'PWR88' for the oxygen absorption model described in \n" | |||
| 15446 | << " P. W. Rosenkranz, Interference coefficients for the \n" | |||
| 15447 | << " overlapping oxygen lines in air, \n" | |||
| 15448 | << " JQSRT, 1988, Volume 39, 287-297.\n"; | |||
| 15449 | throw runtime_error(os.str()); | |||
| 15450 | } | |||
| 15451 | ||||
| 15452 | ||||
| 15453 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 15454 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 15455 | ||||
| 15456 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 15457 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 15457 , "n_p==abs_t.nelem()") : (void)0); | |||
| 15458 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 15458 , "n_p==vmr.nelem()") : (void)0); | |||
| 15459 | ||||
| 15460 | // Check that dimensions of pxsec are consistent with n_f | |||
| 15461 | // and n_p. It should be [n_f,n_p]: | |||
| 15462 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 15462 , "n_f==pxsec.nrows()") : (void)0); | |||
| 15463 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 15463 , "n_p==pxsec.ncols()") : (void)0); | |||
| 15464 | ||||
| 15465 | String fail_msg; | |||
| 15466 | bool failed = false; | |||
| 15467 | ||||
| 15468 | // Loop pressure/temperature: | |||
| 15469 | #pragma omp parallel for \ | |||
| 15470 | if (!arts_omp_in_parallel() \ | |||
| 15471 | && n_p >= arts_omp_get_max_threads()) | |||
| 15472 | for ( Index i=0; i<n_p; ++i ) | |||
| 15473 | { | |||
| 15474 | // check if O2-VMR is exactly zero (caused by zeropadding), then return 0. | |||
| 15475 | if (vmr[i] == 0.) | |||
| 15476 | { | |||
| 15477 | pxsec(joker, i) = 0.; | |||
| 15478 | continue; | |||
| 15479 | } | |||
| 15480 | ||||
| 15481 | // check if O2-VMR will cause an underflow due to division by zero: | |||
| 15482 | if (vmr[i] < VMRCalcLimit) | |||
| 15483 | { | |||
| 15484 | ostringstream os; | |||
| 15485 | os << "ERROR: PWR93 O2 full absorption model has detected a O2 volume mixing ratio of " | |||
| 15486 | << vmr[i] << " which is below the threshold of " << VMRCalcLimit << ".\n" | |||
| 15487 | << "Therefore no calculation is performed.\n"; | |||
| 15488 | #pragma omp critical (PWR93O2AbsModel_error) | |||
| 15489 | { | |||
| 15490 | fail_msg = os.str(); | |||
| 15491 | failed = true; | |||
| 15492 | } | |||
| 15493 | continue; | |||
| 15494 | } | |||
| 15495 | // relative inverse temperature [1] | |||
| 15496 | Numeric TH = 3.0000e2 / abs_t[i]; | |||
| 15497 | Numeric TH1 = (TH-1.000e0); | |||
| 15498 | Numeric B = pow(TH, X); | |||
| 15499 | // partial pressure of H2O and dry air [hPa] | |||
| 15500 | Numeric PRESWV = Pa_to_hPa * (abs_p[i] * vmrh2o[i]); | |||
| 15501 | Numeric PRESDA = Pa_to_hPa * (abs_p[i] * (1.000e0 - vmrh2o[i])); | |||
| 15502 | Numeric DEN = 0.001*(PRESDA*B + 1.1*PRESWV*TH); // [hPa] | |||
| 15503 | Numeric DENS = 0.001*(PRESDA + 1.1*PRESWV)*TH; // [hPa] | |||
| 15504 | Numeric DFNR = WB300*DEN; // [GHz] | |||
| 15505 | ||||
| 15506 | // continuum absorption [1/m/GHz] | |||
| 15507 | Numeric CCONT = CC * 1.23e-10 * pow( TH, (Numeric)2. ) * abs_p[i]; | |||
| 15508 | ||||
| 15509 | // Loop over input frequency | |||
| 15510 | for ( Index s=0; s<n_f; ++s ) | |||
| 15511 | { | |||
| 15512 | // initial O2 line absorption at position ff | |||
| 15513 | // Numeric O2ABS = 0.000e0;cd safff | |||
| 15514 | ||||
| 15515 | // input frequency in [GHz] | |||
| 15516 | Numeric ff = Hz_to_GHz * f_grid[s]; | |||
| 15517 | ||||
| 15518 | // continuum absorption [Neper/km] | |||
| 15519 | Numeric CONT = CCONT * (ff * ff * DFNR / (ff*ff + DFNR*DFNR)); | |||
| 15520 | ||||
| 15521 | // Loop over Rosnekranz '93 spectral line frequency: | |||
| 15522 | Numeric SUM = 0.000e0; | |||
| 15523 | for ( Index l=first_line; l<=last_line; ++l ) | |||
| 15524 | { | |||
| 15525 | Numeric DF = CW * W300[l] * DEN; // [hPa] | |||
| 15526 | // 118 line update according to M. J. Schwartz, MIT, 1997 | |||
| 15527 | if ( (version == "PWR98") && (fabs((F[l]-118.75)) < 0.10) ) | |||
| 15528 | { | |||
| 15529 | DF = CW * W300[l] * DENS; // [hPa] | |||
| 15530 | } | |||
| 15531 | Numeric Y = CO * 0.001 * 0.01 * abs_p[i] * B * ( Y300[l] + V[l]*TH1 ); | |||
| 15532 | Numeric STR = CL * S300[l] * exp(-BE[l] * TH1); | |||
| 15533 | Numeric SF1 = ( DF + (ff-F[l])*Y ) / ( (ff-F[l])*(ff-F[l]) + DF*DF ); | |||
| 15534 | Numeric SF2 = ( DF - (ff+F[l])*Y ) / ( (ff+F[l])*(ff+F[l]) + DF*DF ); | |||
| 15535 | SUM += STR * (SF1+SF2) * (ff/F[l]) * (ff/F[l]); | |||
| 15536 | } | |||
| 15537 | // O2 absorption [Neper/km] | |||
| 15538 | // Rosenkranz uses the factor 0.5034e12 in the calculation of the abs coeff. | |||
| 15539 | // This factor is the product of several terms: | |||
| 15540 | // 0.5034e12 = ISORATIO * VMR * (Hz/GHz) * (k_B*300K)^-1 | |||
| 15541 | // = 0.995262 * 0.20946 * 10^-9 * 2.414322e21(hPa*cm^2*km)^-1 | |||
| 15542 | // |---- 0.2085 ----| |---- 2.414322e12(hPa*cm^2*km)^-1 ---| | |||
| 15543 | // |---- 0.2085 ----| |---- 2.414322e10( Pa*cm^2*km)^-1 ---| | |||
| 15544 | // O2ABS = 2.4143e12 * SUM * PRESDA * pow(TH, 3.0) / PI; | |||
| 15545 | // O2ABS = CONT + (2.414322e10 * SUM * abs_p[i] * pow(TH, 3.0) / PI); | |||
| 15546 | // unit conversion x Nepers/km = y 1/m ---> y = x * 1.000e-3 | |||
| 15547 | // therefore 2.414322e10 --> 2.414322e7 | |||
| 15548 | // pxsec [1/m] | |||
| 15549 | pxsec(s,i) += CONT + (2.414322e7 * SUM * abs_p[i] * pow(TH, (Numeric)3.) / PI); | |||
| 15550 | } | |||
| 15551 | } | |||
| 15552 | ||||
| 15553 | if (failed) throw runtime_error(fail_msg); | |||
| 15554 | ||||
| 15555 | return; | |||
| 15556 | } | |||
| 15557 | // | |||
| 15558 | // ################################################################################# | |||
| 15559 | // | |||
| 15560 | //! MPM93 O2 continuum: | |||
| 15561 | /*! | |||
| 15562 | see publication side of National Telecommunications and Information Administration | |||
| 15563 | http://www.its.bldrdoc.gov/pub/all_pubs/all_pubs.html | |||
| 15564 | and ftp side for downloading the MPM93 original source code: | |||
| 15565 | ftp://ftp.its.bldrdoc.gov/pub/mpm93/ | |||
| 15566 | ||||
| 15567 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 15568 | O2-continuum according to MPM93 [1/m] | |||
| 15569 | \param S0in O2-continuum strength [1/Pa] | |||
| 15570 | \param G0in O2-continuum width [Hz/Pa] | |||
| 15571 | \param XS0in O2-continuum strength temperature exponent [1] | |||
| 15572 | \param XG0in O2-continuum width temperature exponent [1] | |||
| 15573 | \param model allows user defined input parameter set | |||
| 15574 | (S0in, G0in, xS0in, and xG0in)<br> or choice of | |||
| 15575 | pre-defined parameters of specific models (see note below). | |||
| 15576 | \param f_grid predefined frequency grid [Hz] | |||
| 15577 | \param abs_p predefined pressure grid [Pa] | |||
| 15578 | \param abs_t predefined temperature grid [K] | |||
| 15579 | \param abs_h2o H2O volume mixing ratio profile [1] | |||
| 15580 | \param vmr O2 volume mixing ratio profile [1] | |||
| 15581 | ||||
| 15582 | \note Except for model 'user' the input parameters S0in, G0in, xS0in, and xG0in | |||
| 15583 | are neglected (model dominates over parameters).<br> | |||
| 15584 | Allowed models: 'MPM93' and 'user'. | |||
| 15585 | See the user guide for detailed explanations. | |||
| 15586 | ||||
| 15587 | \remark Reference: H. J. Liebe and G. A. Hufford and M. G. Cotton,<br> | |||
| 15588 | <i>Propagation modeling of moist air and suspended water/ice | |||
| 15589 | particles at frequencies below 1000 GHz</i>,<br> | |||
| 15590 | AGARD 52nd Specialists Meeting of the Electromagnetic Wave | |||
| 15591 | Propagation Panel,<br> Palma de Mallorca, Spain, 1993, May 17-21 | |||
| 15592 | ||||
| 15593 | \author Thomas Kuhn | |||
| 15594 | \date 2001-11-05 | |||
| 15595 | */ | |||
| 15596 | ||||
| 15597 | void MPM93_O2_continuum (MatrixView pxsec, | |||
| 15598 | const Numeric S0in, // model parameter | |||
| 15599 | const Numeric G0in, // model parameter | |||
| 15600 | const Numeric XS0in, // model parameter | |||
| 15601 | const Numeric XG0in, // model parameter | |||
| 15602 | const String& model, | |||
| 15603 | ConstVectorView f_grid, | |||
| 15604 | ConstVectorView abs_p, | |||
| 15605 | ConstVectorView abs_t, | |||
| 15606 | ConstVectorView abs_h2o, | |||
| 15607 | ConstVectorView vmr, | |||
| 15608 | const Verbosity& verbosity) | |||
| 15609 | { | |||
| 15610 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 15611 | ||||
| 15612 | // --------- STANDARD MODEL PARAMETERS --------------------------------------------------- | |||
| 15613 | // standard values for the MPM93 model (J. Liebe and G. A. Hufford and M. G. Cotton, | |||
| 15614 | // "Propagation modeling of moist air and suspended water/ice | |||
| 15615 | // particles at frequencies below 1000 GHz", | |||
| 15616 | // AGARD 52nd Specialists Meeting of the Electromagnetic Wave | |||
| 15617 | // Propagation Panel, Palma de Mallorca, Spain, 1993, May 17-21): | |||
| 15618 | // const Numeric S0_MPM93 = 6.140e-13/0.20946; // line strength/VMR-O2 [1/Pa] | |||
| 15619 | const Numeric S0_MPM93 = 6.140e-13; // line strength [1/Pa] | |||
| 15620 | const Numeric G0_MPM93 = 0.560e4; // line width [Hz/Pa] | |||
| 15621 | const Numeric XS0_MPM93 = 2.000; // temperature dependence of line strength | |||
| 15622 | const Numeric XG0_MPM93 = 0.800; // temperature dependence of line width | |||
| 15623 | // --------------------------------------------------------------------------------------- | |||
| 15624 | ||||
| 15625 | ||||
| 15626 | // select the parameter set (!!model dominates parameters!!): | |||
| 15627 | Numeric S0, G0, XS0, XG0; | |||
| 15628 | if ( model == "MPM93" ) | |||
| 15629 | { | |||
| 15630 | S0 = S0_MPM93; | |||
| 15631 | G0 = G0_MPM93; | |||
| 15632 | XS0 = XS0_MPM93; | |||
| 15633 | XG0 = XG0_MPM93; | |||
| 15634 | } | |||
| 15635 | else if ( model == "user" ) | |||
| 15636 | { | |||
| 15637 | S0 = S0in; | |||
| 15638 | G0 = G0in; | |||
| 15639 | XS0 = XS0in; | |||
| 15640 | XG0 = XG0in; | |||
| 15641 | } | |||
| 15642 | else | |||
| 15643 | { | |||
| 15644 | ostringstream os; | |||
| 15645 | os << "O2-SelfContMPM93: ERROR! Wrong model values given.\n" | |||
| 15646 | << "Valid models are: 'MPM93' and 'user'" << '\n'; | |||
| 15647 | throw runtime_error(os.str()); | |||
| 15648 | } | |||
| 15649 | out3 << "O2-SelfContMPM93: (model=" << model << ") parameter values in use:\n" | |||
| 15650 | << " S0 = " << S0 << "\n" | |||
| 15651 | << " G0 = " << G0 << "\n" | |||
| 15652 | << " XS0 = " << XS0 << "\n" | |||
| 15653 | << " XG0 = " << XG0 << "\n"; | |||
| 15654 | ||||
| 15655 | ||||
| 15656 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 15657 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 15658 | ||||
| 15659 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 15660 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 15660 , "n_p==abs_t.nelem()") : (void)0); | |||
| 15661 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 15661 , "n_p==vmr.nelem()") : (void)0); | |||
| 15662 | ||||
| 15663 | // Check that dimensions of pxsec are consistent with n_f | |||
| 15664 | // and n_p. It should be [n_f,n_p]: | |||
| 15665 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 15665 , "n_f==pxsec.nrows()") : (void)0); | |||
| 15666 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 15666 , "n_p==pxsec.ncols()") : (void)0); | |||
| 15667 | ||||
| 15668 | // const = VMR * ISORATIO = 0.20946 * 0.99519 | |||
| 15669 | // this constant is already incorporated into the line strength, so we | |||
| 15670 | // have top devide the line strength by this value since arts multiplies pxsec | |||
| 15671 | // by these variables later in abs_coefCalc. | |||
| 15672 | const Numeric VMRISO = 0.2085; | |||
| 15673 | ||||
| 15674 | ||||
| 15675 | // Loop pressure/temperature: | |||
| 15676 | for ( Index i=0; i<n_p; ++i ) | |||
| 15677 | { | |||
| 15678 | // check if O2-VMR is exactly zero (caused by zeropadding), then return 0. | |||
| 15679 | if (vmr[i] == 0.) | |||
| 15680 | { | |||
| 15681 | pxsec(joker, i) = 0.; | |||
| 15682 | continue; | |||
| 15683 | } | |||
| 15684 | ||||
| 15685 | if (vmr[i] < VMRCalcLimit) // make sure that division by zero is excluded | |||
| 15686 | { | |||
| 15687 | ostringstream os; | |||
| 15688 | os << "ERROR: MPM93 O2 continuum absorption model has detected a O2 volume mixing ratio of " | |||
| 15689 | << vmr[i] << " which is below the threshold of " << VMRCalcLimit << ".\n" | |||
| 15690 | << "Therefore no calculation is performed.\n"; | |||
| 15691 | throw runtime_error(os.str()); | |||
| 15692 | return; | |||
| 15693 | } | |||
| 15694 | Numeric th = 300.0 / abs_t[i]; // Theta | |||
| 15695 | // continuum strength | |||
| 15696 | Numeric strength = S0 * abs_p[i] * (1.0000 - abs_h2o[i]) * pow( th, XS0 ); | |||
| 15697 | // G0 from the input has to be converted to unit GHz/hPa --> * 1.0e-7 | |||
| 15698 | Numeric gamma = G0 * abs_p[i] * pow( th, XG0 ); // Hz | |||
| 15699 | ||||
| 15700 | // Loop frequency: | |||
| 15701 | for ( Index s=0; s<n_f; ++s ) | |||
| 15702 | { | |||
| 15703 | // the vmr of O2 will be multiplied at the stage of absorption calculation: | |||
| 15704 | // abs / vmr * pxsec. | |||
| 15705 | pxsec(s,i) += (4.0 * PI / SPEED_OF_LIGHT) * // unit factor [1/(m*Hz)] | |||
| 15706 | (strength / VMRISO) * // strength [1] | |||
| 15707 | ( pow( f_grid[s], (Numeric)2.) * gamma / // line shape [Hz] | |||
| 15708 | ( pow( f_grid[s], (Numeric)2.) + pow( gamma, (Numeric)2.) ) ); | |||
| 15709 | } | |||
| 15710 | } | |||
| 15711 | return; | |||
| 15712 | } | |||
| 15713 | // | |||
| 15714 | // ################################################################################# | |||
| 15715 | // | |||
| 15716 | //! 3) O2-air | |||
| 15717 | /*! | |||
| 15718 | P. W. Rosenkranz Chapter 2, pp 74, in M. A. Janssen, | |||
| 15719 | "Atmospheric Remote Sensing by Microwave Radiometry", | |||
| 15720 | John Wiley & Sons, Inc., 1993. Also stated in | |||
| 15721 | Liebe et al. JQSRT, Vol 48, Nr 5/6, pp. 629-643, 1992. | |||
| 15722 | Default continuum parameters are C=1.6E-17*10E-9, x=0.8 | |||
| 15723 | ||||
| 15724 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 15725 | O2-continuum according to Rosenkranz 1993 [1/m] | |||
| 15726 | \param S0in line strength [K²/(Hz*Pa*m)] | |||
| 15727 | \param G0in line width [Hz/Pa] | |||
| 15728 | \param XS0in line strength temperature exponent [1] | |||
| 15729 | \param XG0in line widths temperature exponent [1] | |||
| 15730 | \param model allows user defined input parameter set | |||
| 15731 | (S0in, G0in, XS0in, and XG0in)<br> or choice of | |||
| 15732 | pre-defined parameters of specific models (see note below). | |||
| 15733 | \param f_grid predefined frequency grid [Hz] | |||
| 15734 | \param abs_p predefined pressure grid [Pa] | |||
| 15735 | \param abs_t predefined temperature grid [K] | |||
| 15736 | \param abs_h2o H2O volume mixing ratio profile [1] | |||
| 15737 | \param vmr O2 volume mixing ratio profile [1] | |||
| 15738 | ||||
| 15739 | \note Except for model 'user' the input parameters S0in, G0in, XS0in, and XG0in | |||
| 15740 | are neglected (model dominates over parameters).<br> | |||
| 15741 | Allowed models: 'Rosenkranz' and 'user'. | |||
| 15742 | See the user guide for detailed explanations. | |||
| 15743 | ||||
| 15744 | \remark Reference: P. W. Rosenkranz, Chapter 2, in M. A. Janssen, <br> | |||
| 15745 | <I>Atmospheric Remote Sensing by Microwave Radiometry</i>,<br> | |||
| 15746 | John Wiley & Sons, Inc., 1993. | |||
| 15747 | ||||
| 15748 | \author Thomas Kuhn | |||
| 15749 | \date 2001-11-05 | |||
| 15750 | */ | |||
| 15751 | ||||
| 15752 | void Rosenkranz_O2_continuum (MatrixView pxsec, | |||
| 15753 | const Numeric S0in, // model parameter | |||
| 15754 | const Numeric G0in, // model parameter | |||
| 15755 | const Numeric XS0in, // model parameter | |||
| 15756 | const Numeric XG0in, // model parameter | |||
| 15757 | const String& model, | |||
| 15758 | ConstVectorView f_grid, | |||
| 15759 | ConstVectorView abs_p, // total pressure [Pa] | |||
| 15760 | ConstVectorView abs_t, | |||
| 15761 | ConstVectorView abs_h2o, // H2O VMR | |||
| 15762 | ConstVectorView vmr _U___attribute((unused)), // O2 VMR | |||
| 15763 | const Verbosity& verbosity) | |||
| 15764 | { | |||
| 15765 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 15766 | ||||
| 15767 | // --------- STANDARD MODEL PARAMETERS --------------------------------------------------- | |||
| 15768 | // P. W. Rosenkranz, Chapter 2, in M. A. Janssen, | |||
| 15769 | // Atmospheric Remote Sensing by Microwave Radiometry, John Wiley & Sons, Inc., 1993 | |||
| 15770 | // ftp://mesa.mit.edu/phil/lbl_rt | |||
| 15771 | const Numeric S0_PWR93 = 1.11e-14; // [K²/(Hz*Pa*m)] line strength | |||
| 15772 | const Numeric G0_PWR93 = 5600.000; // line width [Hz/Pa] | |||
| 15773 | const Numeric XS0_PWR93 = 2.000; // temperature dependence of line strength | |||
| 15774 | const Numeric XG0_PWR93 = 0.800; // temperature dependence of line width | |||
| 15775 | // --------------------------------------------------------------------------------------- | |||
| 15776 | ||||
| 15777 | // select the parameter set (!!model dominates values!!): | |||
| 15778 | Numeric S0, G0, XS0, XG0; | |||
| 15779 | if ( model == "Rosenkranz" ) | |||
| 15780 | { | |||
| 15781 | S0 = S0_PWR93; | |||
| 15782 | G0 = G0_PWR93; | |||
| 15783 | XS0 = XS0_PWR93; | |||
| 15784 | XG0 = XG0_PWR93; | |||
| 15785 | } | |||
| 15786 | else if ( model == "user" ) | |||
| 15787 | { | |||
| 15788 | S0 = S0in; | |||
| 15789 | G0 = G0in; | |||
| 15790 | XS0 = XS0in; | |||
| 15791 | XG0 = XG0in; | |||
| 15792 | } | |||
| 15793 | else | |||
| 15794 | { | |||
| 15795 | ostringstream os; | |||
| 15796 | os << "O2-SelfContPWR93: ERROR! Wrong model values given.\n" | |||
| 15797 | << "Valid models are: 'Rosenkranz' and 'user'" << '\n'; | |||
| 15798 | throw runtime_error(os.str()); | |||
| 15799 | } | |||
| 15800 | out3 << "O2-SelfContPWR93: (model=" << model << ") parameter values in use:\n" | |||
| 15801 | << " S0 = " << S0 << "\n" | |||
| 15802 | << " G0 = " << G0 << "\n" | |||
| 15803 | << " XS0 = " << XS0 << "\n" | |||
| 15804 | << " XG0 = " << XG0 << "\n"; | |||
| 15805 | ||||
| 15806 | ||||
| 15807 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 15808 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 15809 | ||||
| 15810 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 15811 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 15811 , "n_p==abs_t.nelem()") : (void)0); | |||
| 15812 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 15812 , "n_p==vmr.nelem()") : (void)0); | |||
| 15813 | ||||
| 15814 | // Check that dimensions of pxsec are consistent with n_f | |||
| 15815 | // and n_p. It should be [n_f,n_p]: | |||
| 15816 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 15816 , "n_f==pxsec.nrows()") : (void)0); | |||
| 15817 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 15817 , "n_p==pxsec.ncols()") : (void)0); | |||
| 15818 | ||||
| 15819 | // loop over all pressure levels: | |||
| 15820 | for ( Index i=0; i<n_p; ++i ) | |||
| 15821 | { | |||
| 15822 | Numeric TH = 300.00 / abs_t[i]; // relative temperature [1] | |||
| 15823 | ||||
| 15824 | Numeric ph2o = abs_p[i] * abs_h2o[i]; // water vapor partial pressure [Pa] | |||
| 15825 | Numeric pdry = abs_p[i] - ph2o; // dry air partial pressure [Pa] | |||
| 15826 | ||||
| 15827 | ||||
| 15828 | // pseudo broadening term [Hz] | |||
| 15829 | Numeric gamma = G0 * (pdry * pow( TH, XG0 ) + 1.100 * ph2o * TH); | |||
| 15830 | ||||
| 15831 | // Loop over frequency grid: | |||
| 15832 | for ( Index s=0; s<n_f; ++s ) | |||
| 15833 | { | |||
| 15834 | // division by vmr of O2 is necessary because of the absorption calculation | |||
| 15835 | // abs = vmr * pxsec. | |||
| 15836 | pxsec(s,i) += S0 * abs_p[i] / pow( abs_t[i], XS0 ) * | |||
| 15837 | ( pow( f_grid[s], (Numeric)2. ) | |||
| 15838 | * gamma / ( pow( f_grid[s], 2 ) | |||
| 15839 | + pow( gamma, (Numeric)2. ) ) ) ; | |||
| 15840 | } | |||
| 15841 | } | |||
| 15842 | } | |||
| 15843 | // | |||
| 15844 | // | |||
| 15845 | // ################################################################################# | |||
| 15846 | //! Standard_O2_continuum | |||
| 15847 | /*! | |||
| 15848 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 15849 | O2-continuum according to Rosenkranz 1993 [1/m] | |||
| 15850 | \param Cin O2-continuum coefficient [1/(Hz*Pa*m)] | |||
| 15851 | \param G0in line width [Hz/Pa] | |||
| 15852 | \param G0Ain dry air broadening parameter [1] | |||
| 15853 | \param G0Bin water vapor broadening parameter [1] | |||
| 15854 | \param XG0din line strength temperature exponent [1] | |||
| 15855 | \param XG0win line widths temperature exponent [1] | |||
| 15856 | \param model allows user defined input parameter set | |||
| 15857 | (S0in, G0in, XS0in, and XG0in)<br> or choice of | |||
| 15858 | pre-defined parameters of specific models (see note below). | |||
| 15859 | \param f_grid predefined frequency grid [Hz] | |||
| 15860 | \param abs_p predefined pressure grid [Pa] | |||
| 15861 | \param abs_t predefined temperature grid [K] | |||
| 15862 | \param abs_h2o H2O volume mixing ratio profile [1] | |||
| 15863 | \param vmr O2 volume mixing ratio profile [1] | |||
| 15864 | ||||
| 15865 | \note Except for model 'user' the input parameters S0in, G0in, XS0in, and XG0in | |||
| 15866 | are neglected (model dominates over parameters).<br> | |||
| 15867 | Allowed models: 'Rosenkranz' and 'user'. | |||
| 15868 | See the user guide for detailed explanations. | |||
| 15869 | ||||
| 15870 | \remark Reference: P. W. Rosenkranz, Chapter 2, in M. A. Janssen, <br> | |||
| 15871 | <I>Atmospheric Remote Sensing by Microwave Radiometry</i>,<br> | |||
| 15872 | John Wiley & Sons, Inc., 1993.<br> | |||
| 15873 | <br> | |||
| 15874 | Reference: H. J. Liebe and G. A. Hufford and M. G. Cotton,<br> | |||
| 15875 | <i>Propagation modeling of moist air and suspended water/ice | |||
| 15876 | particles at frequencies below 1000 GHz</i>,<br> | |||
| 15877 | AGARD 52nd Specialists Meeting of the Electromagnetic Wave | |||
| 15878 | Propagation Panel,<br> Palma de Mallorca, Spain, 1993, May 17-21 | |||
| 15879 | ||||
| 15880 | \author Thomas Kuhn | |||
| 15881 | \date 2001-11-05 | |||
| 15882 | */ | |||
| 15883 | ||||
| 15884 | void Standard_O2_continuum (MatrixView pxsec, // cross section | |||
| 15885 | const Numeric Cin, // model parameter | |||
| 15886 | const Numeric G0in, // model parameter | |||
| 15887 | const Numeric G0Ain, // model parameter | |||
| 15888 | const Numeric G0Bin, // model parameter | |||
| 15889 | const Numeric XG0din, // model parameter | |||
| 15890 | const Numeric XG0win, // model parameter | |||
| 15891 | const String& model, // model parameter | |||
| 15892 | ConstVectorView f_grid, // frequency grid | |||
| 15893 | ConstVectorView abs_p, // P_tot grid | |||
| 15894 | ConstVectorView abs_t, // T grid | |||
| 15895 | ConstVectorView abs_h2o, // VMR H2O profile | |||
| 15896 | ConstVectorView vmr _U___attribute((unused)), // VMR O2 profile | |||
| 15897 | const Verbosity& verbosity) | |||
| 15898 | { | |||
| 15899 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 15900 | ||||
| 15901 | // --------- STANDARD MODEL PARAMETERS --------------------------------------------------- | |||
| 15902 | // P. W. Rosenkranz, Chapter 2, in M. A. Janssen, | |||
| 15903 | // Atmospheric Remote Sensing by Microwave Radiometry, John Wiley & Sons, Inc., 1993 | |||
| 15904 | // ftp://mesa.mit.edu/phil/lbl_rt | |||
| 15905 | const Numeric C_PWR93 = (1.108e-14/pow((Numeric)3.0e2,(Numeric)2.)); // [1/(Hz*Pa*m)] line strength | |||
| 15906 | const Numeric G0_PWR93 = 5600.000; // line width [Hz/Pa] | |||
| 15907 | const Numeric G0A_PWR93 = 1.000; // line width [1] | |||
| 15908 | const Numeric G0B_PWR93 = 1.100; // line width [1] | |||
| 15909 | const Numeric XG0d_PWR93 = 0.800; // temperature dependence of line width [1] | |||
| 15910 | const Numeric XG0w_PWR93 = 1.000; // temperature dependence of line width [1] | |||
| 15911 | // | |||
| 15912 | // standard values for the MPM93 model (J. Liebe and G. A. Hufford and M. G. Cotton, | |||
| 15913 | // "Propagation modeling of moist air and suspended water/ice | |||
| 15914 | // particles at frequencies below 1000 GHz", | |||
| 15915 | // AGARD 52nd Specialists Meeting of the Electromagnetic Wave | |||
| 15916 | // Propagation Panel, Palma de Mallorca, Spain, 1993, May 17-21): | |||
| 15917 | // const Numeric C_MPM93 = 1.23e-19; // line strength/VMR [1/m*1/Hz*1/Pa] | |||
| 15918 | const Numeric C_MPM93 = 6.14e-13*(4.0*PI/SPEED_OF_LIGHT)/0.2085; // line strength [1/m*1/Hz*1/Pa] | |||
| 15919 | // 0.2085 = VMR * ISORATIO = 0.20946 * 0.99519 | |||
| 15920 | const Numeric G0_MPM93 = 5600.000; // line width [Hz/Pa] | |||
| 15921 | const Numeric G0A_MPM93 = 1.000; // line width [1] | |||
| 15922 | const Numeric G0B_MPM93 = 1.000; // line width [1] | |||
| 15923 | const Numeric XG0d_MPM93 = 0.800; // temperature dependence of line strength [1] | |||
| 15924 | const Numeric XG0w_MPM93 = 0.800; // temperature dependence of line width [1] | |||
| 15925 | // --------------------------------------------------------------------------------------- | |||
| 15926 | ||||
| 15927 | // select the parameter set (!!model dominates values!!): | |||
| 15928 | Numeric C, G0, G0A, G0B, XG0d, XG0w; | |||
| 15929 | if ( model == "Rosenkranz" ) | |||
| 15930 | { | |||
| 15931 | C = C_PWR93; | |||
| 15932 | G0 = G0_PWR93; | |||
| 15933 | G0A = G0A_PWR93; | |||
| 15934 | G0B = G0B_PWR93; | |||
| 15935 | XG0d = XG0d_PWR93; | |||
| 15936 | XG0w = XG0w_PWR93; | |||
| 15937 | } | |||
| 15938 | else if ( model == "MPM93" ) | |||
| 15939 | { | |||
| 15940 | C = C_MPM93; | |||
| 15941 | G0 = G0_MPM93; | |||
| 15942 | G0A = G0A_MPM93; | |||
| 15943 | G0B = G0B_MPM93; | |||
| 15944 | XG0d = XG0d_MPM93; | |||
| 15945 | XG0w = XG0w_MPM93; | |||
| 15946 | } | |||
| 15947 | else if ( model == "user" ) | |||
| 15948 | { | |||
| 15949 | C = Cin; | |||
| 15950 | G0 = G0in; | |||
| 15951 | G0A = G0Ain; | |||
| 15952 | G0B = G0Bin; | |||
| 15953 | XG0d = XG0din; | |||
| 15954 | XG0w = XG0win; | |||
| 15955 | } | |||
| 15956 | else | |||
| 15957 | { | |||
| 15958 | ostringstream os; | |||
| 15959 | os << "O2-GenerealCont: ERROR! Wrong model values given.\n" | |||
| 15960 | << "Valid models are: 'Rosenkranz', 'MPM93' and 'user'" << '\n'; | |||
| 15961 | throw runtime_error(os.str()); | |||
| 15962 | } | |||
| 15963 | out3 << "O2-GeneralCont: (model=" << model << ") parameter values in use:\n" | |||
| 15964 | << " C = " << C << "\n" | |||
| 15965 | << " G0 = " << G0 << "\n" | |||
| 15966 | << " G0A = " << G0A << "\n" | |||
| 15967 | << " G0B = " << G0B << "\n" | |||
| 15968 | << " XG0d = " << XG0d << "\n" | |||
| 15969 | << " XG0w = " << XG0w << "\n"; | |||
| 15970 | ||||
| 15971 | ||||
| 15972 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 15973 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 15974 | ||||
| 15975 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 15976 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 15976 , "n_p==abs_t.nelem()") : (void)0); | |||
| 15977 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 15977 , "n_p==vmr.nelem()") : (void)0); | |||
| 15978 | ||||
| 15979 | // Check that dimensions of pxsec are consistent with n_f | |||
| 15980 | // and n_p. It should be [n_f,n_p]: | |||
| 15981 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 15981 , "n_f==pxsec.nrows()") : (void)0); | |||
| 15982 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 15982 , "n_p==pxsec.ncols()") : (void)0); | |||
| 15983 | ||||
| 15984 | // const = VMR * ISORATIO = 0.20946 * 0.99519 | |||
| 15985 | // this constant is already incorporated into the line strength, so we | |||
| 15986 | // have top devide the line strength by this value since arts multiplies pxsec | |||
| 15987 | // by these variables later in abs_coefCalc. | |||
| 15988 | // FIXME const Numeric VMRISO = 0.2085; | |||
| 15989 | ||||
| 15990 | // loop over all pressure levels: | |||
| 15991 | for ( Index i=0; i<n_p; ++i ) | |||
| 15992 | { | |||
| 15993 | Numeric TH = 3.0e2 / abs_t[i]; // relative temperature [1] | |||
| 15994 | ||||
| 15995 | Numeric ph2o = abs_p[i] * abs_h2o[i]; // water vapor partial pressure [Pa] | |||
| 15996 | Numeric pdry = abs_p[i] - ph2o; // dry air partial pressure [Pa] | |||
| 15997 | ||||
| 15998 | ||||
| 15999 | // pseudo broadening term [Hz] | |||
| 16000 | Numeric gamma = G0 * (G0A * pdry * pow( TH, XG0d ) + G0B * ph2o * pow( TH, XG0w )); | |||
| 16001 | ||||
| 16002 | // Loop over frequency grid: | |||
| 16003 | for ( Index s=0; s<n_f; ++s ) | |||
| 16004 | { | |||
| 16005 | // division by vmr of O2 is necessary because of the absorption calculation | |||
| 16006 | // abs = vmr * pxsec. | |||
| 16007 | pxsec(s,i) += C * abs_p[i] * pow( TH, (Numeric)2. ) * | |||
| 16008 | ( gamma * pow( f_grid[s], (Numeric)2. ) / | |||
| 16009 | ( pow( f_grid[s], 2 ) + pow( gamma, (Numeric)2. ) ) ); | |||
| 16010 | } | |||
| 16011 | } | |||
| 16012 | } | |||
| 16013 | // | |||
| 16014 | // ################################################################################# | |||
| 16015 | // ################################ NITROGEN MODELS ################################ | |||
| 16016 | // ################################################################################# | |||
| 16017 | // | |||
| 16018 | //! Borysow-Frommhold 1986 N2-N2 CIA absorption model; | |||
| 16019 | /*! | |||
| 16020 | see publication A. Borysow and L. Frommhold, | |||
| 16021 | The Astrophysical Journal, vol.311, pp.1043-1057, 1986 | |||
| 16022 | see http://adsabs.harvard.edu/article_service.html for a scanned | |||
| 16023 | version of the paper | |||
| 16024 | ||||
| 16025 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 16026 | N2-CIA according to BF-86 model [1/m] | |||
| 16027 | \param Cin strength scaling factor [1] | |||
| 16028 | \param model allows user defined input parameter set | |||
| 16029 | (Cin)<br> or choice of | |||
| 16030 | pre-defined parameters of specific models (see note below). | |||
| 16031 | \param f_grid predefined frequency grid [Hz] | |||
| 16032 | \param abs_p predefined pressure grid [Pa] | |||
| 16033 | \param abs_t predefined temperature grid [K] | |||
| 16034 | \param vmr N2 volume mixing ratio profile [1] | |||
| 16035 | ||||
| 16036 | \note this "crude" version of the N2-N2 model is a f2c | |||
| 16037 | conversion of the N2-N2 F77 code of Prof. A. Borysow. | |||
| 16038 | The original code can be downloaded at | |||
| 16039 | <a href="http://www.astro.ku.dk/~aborysow/">F77 code</a>. | |||
| 16040 | ||||
| 16041 | \remark Reference: A. Borysow and L. Frommhold, | |||
| 16042 | The Astrophysical Journal, vol.311, pp.1043-1057, 1986 | |||
| 16043 | see <a href="http://adsabs.harvard.edu/article_service.html">for a scanned | |||
| 16044 | version of the paper</a>. | |||
| 16045 | ||||
| 16046 | \author Thomas Kuhn | |||
| 16047 | \date 2002-03-05 | |||
| 16048 | */ | |||
| 16049 | void BF86_CIA_N2 (MatrixView pxsec, | |||
| 16050 | const Numeric Cin, | |||
| 16051 | const String& model, | |||
| 16052 | ConstVectorView f_grid, | |||
| 16053 | ConstVectorView abs_p, | |||
| 16054 | ConstVectorView abs_t, | |||
| 16055 | ConstVectorView vmr, | |||
| 16056 | const Verbosity& verbosity) | |||
| 16057 | { | |||
| 16058 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 16059 | ||||
| 16060 | // | |||
| 16061 | // | |||
| 16062 | // external function to call (original F77 code translated with f2c) | |||
| 16063 | extern Numeric n2n2tks_(double t, double f); | |||
| 16064 | // | |||
| 16065 | // --------- STANDARD MODEL PARAMETERS --------------------------------------------------- | |||
| 16066 | // standard values for the MPM93 H2O continuum model | |||
| 16067 | // (AGARD 52nd Specialists Meeting of the Electromagnetic Wave | |||
| 16068 | // Propagation Panel, Palma de Mallorca, Spain, 1993, May 17-21): | |||
| 16069 | Numeric XFAC = 1.0000; // scaling factor | |||
| 16070 | // --------------------------------------------------------------------------------------- | |||
| 16071 | ||||
| 16072 | // select the parameter set (!!model dominates values!!): | |||
| 16073 | if ( model == "BF86" ) | |||
| 16074 | { | |||
| 16075 | XFAC = 1.0000; | |||
| 16076 | } | |||
| 16077 | else if ( model == "user" ) | |||
| 16078 | { | |||
| 16079 | XFAC = Cin; | |||
| 16080 | } | |||
| 16081 | else | |||
| 16082 | { | |||
| 16083 | ostringstream os; | |||
| 16084 | os << "N2-SelfContBorysow: ERROR! Wrong model values given.\n" | |||
| 16085 | << "allowed models are: 'BF86', 'user'" << '\n'; | |||
| 16086 | throw runtime_error(os.str()); | |||
| 16087 | } | |||
| 16088 | ||||
| 16089 | out3 << "N2-SelfContBorysow: (model=" << model << ") parameter values in use:\n" | |||
| 16090 | << " XFAC = " << XFAC << "\n"; | |||
| 16091 | ||||
| 16092 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 16093 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 16094 | ||||
| 16095 | ||||
| 16096 | const Numeric AMAG2DEN = 44.53807; // inverse of N2 mol volume at std p/T | |||
| 16097 | const Numeric RIDGAS = 8.314510; // ideal gas constant | |||
| 16098 | ||||
| 16099 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 16100 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16100 , "n_p==abs_t.nelem()") : (void)0); | |||
| 16101 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16101 , "n_p==vmr.nelem()") : (void)0); | |||
| 16102 | ||||
| 16103 | // Check that dimensions of pxsec are consistent with n_f | |||
| 16104 | // and n_p. It should be [n_f,n_p]: | |||
| 16105 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16105 , "n_f==pxsec.nrows()") : (void)0); | |||
| 16106 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16106 , "n_p==pxsec.ncols()") : (void)0); | |||
| 16107 | ||||
| 16108 | // Loop pressure/temperature: | |||
| 16109 | for ( Index i=0; i<n_p; ++i ) | |||
| 16110 | { | |||
| 16111 | //cout << "------------------------------------------------\n"; | |||
| 16112 | double T = (double) abs_t[i]; | |||
| 16113 | //cout << "N2-N2 BF86: T =" << T << " K\n"; | |||
| 16114 | //cout << "N2-N2 BF86: p =" << abs_p[i] << " Pa\n"; | |||
| 16115 | //cout << "N2-N2 BF86: VMR =" << vmr[i] << "\n"; | |||
| 16116 | Numeric XAMA = (abs_p[i]) / ( AMAG2DEN * RIDGAS * abs_t[i] ); | |||
| 16117 | Numeric XAMA2 = pow(XAMA,(Numeric)2.); | |||
| 16118 | //cout << "N2-N2 BF86: XAMA =" << XAMA << "\n"; | |||
| 16119 | ||||
| 16120 | // Loop frequency: | |||
| 16121 | for ( Index s=0; s<n_f; ++s ) | |||
| 16122 | { | |||
| 16123 | // the second vmr of N2 will be multiplied at the stage of | |||
| 16124 | // absorption calculation: abs = vmr * pxsec. | |||
| 16125 | double f = (double) f_grid[s]; | |||
| 16126 | //cout << "N2-N2 BF86: f =" << f << " Hz\n"; | |||
| 16127 | double cont = n2n2tks_(T, f); | |||
| 16128 | pxsec(s,i) += (Numeric) (cont * 1.000e2 * vmr[i] * XAMA2); | |||
| 16129 | //cout << "N2-N2 BF86: cont =" << cont << " cm-1 * amagat-2\n"; | |||
| 16130 | //cout << "N2-N2 BF86: abs =" << (vmr[i] * pxsec(s,i)) << " m-1\n"; | |||
| 16131 | } | |||
| 16132 | } | |||
| 16133 | return; | |||
| 16134 | } | |||
| 16135 | // | |||
| 16136 | // ################################################################################# | |||
| 16137 | // | |||
| 16138 | //! MPM93 N2 continuum | |||
| 16139 | /*! | |||
| 16140 | see publication side of National Telecommunications and Information Administration | |||
| 16141 | http://www.its.bldrdoc.gov/pub/all_pubs/all_pubs.html | |||
| 16142 | and ftp side for downloading the MPM93 original source code: | |||
| 16143 | ftp://ftp.its.bldrdoc.gov/pub/mpm93/ | |||
| 16144 | ||||
| 16145 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 16146 | N2-continuum according to MPM93 [1/m] | |||
| 16147 | \param Cin continuum strength [ppm/GHz] | |||
| 16148 | \param Gin width parameter [Hz/Pa] | |||
| 16149 | \param xTin continuum strength temperature exponent [1] | |||
| 16150 | \param xfin continuum frequency exponent [1] | |||
| 16151 | \param model allows user defined input parameter set | |||
| 16152 | (Cin, Gin, xTin, and xfin)<br> or choice of | |||
| 16153 | pre-defined parameters of specific models (see note below). | |||
| 16154 | \param f_grid predefined frequency grid [Hz] | |||
| 16155 | \param abs_p predefined pressure grid [Pa] | |||
| 16156 | \param abs_t predefined temperature grid [K] | |||
| 16157 | \param abs_h2o H2O volume mixing ratio profile [1] | |||
| 16158 | \param vmr N2 volume mixing ratio profile [1] | |||
| 16159 | ||||
| 16160 | \note Except for model 'user' the input parameters Cin, Gin, xTin, and xfin | |||
| 16161 | are neglected (model dominates over parameters).<br> | |||
| 16162 | Allowed models: 'MPM93' and 'user'. | |||
| 16163 | See the user guide for detailed explanations. | |||
| 16164 | ||||
| 16165 | \remark Reference: H. J. Liebe and G. A. Hufford and M. G. Cotton,<br> | |||
| 16166 | <i>Propagation modeling of moist air and suspended water/ice | |||
| 16167 | particles at frequencies below 1000 GHz</i>,<br> | |||
| 16168 | AGARD 52nd Specialists Meeting of the Electromagnetic Wave | |||
| 16169 | Propagation Panel,<br> Palma de Mallorca, Spain, 1993, May 17-21 | |||
| 16170 | ||||
| 16171 | \author Thomas Kuhn | |||
| 16172 | \date 2001-11-05 | |||
| 16173 | */ | |||
| 16174 | ||||
| 16175 | void MPM93_N2_continuum (MatrixView pxsec, | |||
| 16176 | const Numeric Cin, | |||
| 16177 | const Numeric Gin, | |||
| 16178 | const Numeric xTin, | |||
| 16179 | const Numeric xfin, | |||
| 16180 | const String& model, | |||
| 16181 | ConstVectorView f_grid, | |||
| 16182 | ConstVectorView abs_p, | |||
| 16183 | ConstVectorView abs_t, | |||
| 16184 | ConstVectorView abs_h2o, | |||
| 16185 | ConstVectorView vmr, | |||
| 16186 | const Verbosity& verbosity) | |||
| 16187 | { | |||
| 16188 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 16189 | ||||
| 16190 | // --------- STANDARD MODEL PARAMETERS --------------------------------------------------- | |||
| 16191 | // standard values for the MPM93 H2O continuum model | |||
| 16192 | // (AGARD 52nd Specialists Meeting of the Electromagnetic Wave | |||
| 16193 | // Propagation Panel, Palma de Mallorca, Spain, 1993, May 17-21): | |||
| 16194 | const Numeric xT_MPM93 = 3.500; // temperature exponent [1] | |||
| 16195 | const Numeric xf_MPM93 = 1.500; // frequency exponent [1] | |||
| 16196 | const Numeric gxf_MPM93 = 9.000*xf_MPM93; // needed for the unit conversion of G_MPM93 | |||
| 16197 | const Numeric S_MPM93 = 2.296e-31; // line strength [1/Pa² * 1/Hz] | |||
| 16198 | const Numeric G_MPM93 = 1.930e-5*pow((Numeric)10.000, -gxf_MPM93); // frequency factor [1/Hz^xf] | |||
| 16199 | // --------------------------------------------------------------------------------------- | |||
| 16200 | ||||
| 16201 | // select the parameter set (!!model dominates values!!): | |||
| 16202 | Numeric S0, G0, xf, xT; | |||
| 16203 | //Numeric gxf; | |||
| 16204 | if ( model == "MPM93" ) | |||
| 16205 | { | |||
| 16206 | S0 = S_MPM93; | |||
| 16207 | G0 = G_MPM93; | |||
| 16208 | xT = xT_MPM93; | |||
| 16209 | xf = xf_MPM93; | |||
| 16210 | //gxf = gxf_MPM93; | |||
| 16211 | } | |||
| 16212 | else if ( model == "MPM93Scale" ) | |||
| 16213 | { | |||
| 16214 | S0 = Cin * S_MPM93; | |||
| 16215 | G0 = G_MPM93; | |||
| 16216 | xT = xT_MPM93; | |||
| 16217 | xf = xf_MPM93; | |||
| 16218 | //gxf = gxf_MPM93; | |||
| 16219 | } | |||
| 16220 | else if ( model == "user" ) | |||
| 16221 | { | |||
| 16222 | S0 = Cin; | |||
| 16223 | G0 = Gin; | |||
| 16224 | xT = xTin; | |||
| 16225 | xf = xfin; | |||
| 16226 | //gxf = 9.000*xf; | |||
| 16227 | } | |||
| 16228 | else | |||
| 16229 | { | |||
| 16230 | ostringstream os; | |||
| 16231 | os << "N2-SelfContMPM93 : ERROR! Wrong model values given.\n" | |||
| 16232 | << "allowed models are: 'MPM93', 'MPM93Scale' or 'user'" << '\n'; | |||
| 16233 | throw runtime_error(os.str()); | |||
| 16234 | } | |||
| 16235 | ||||
| 16236 | out3 << "N2-SelfContMPM93: (model=" << model << ") parameter values in use:\n" | |||
| 16237 | << " S0 = " << S0 << "\n" | |||
| 16238 | << " G0 = " << G0 << "\n" | |||
| 16239 | << " xT = " << xT << "\n" | |||
| 16240 | << " xf = " << xf << "\n"; | |||
| 16241 | ||||
| 16242 | // unit conversion internally: | |||
| 16243 | //const Numeric S0unitconv = 1.000e+13; // x [1/(hPa²*GHz)] => y [1/(pa²*Hz)] | |||
| 16244 | //const Numeric G0unitconv = pow(10.000, gxf); | |||
| 16245 | ||||
| 16246 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 16247 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 16248 | ||||
| 16249 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 16250 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16250 , "n_p==abs_t.nelem()") : (void)0); | |||
| 16251 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16251 , "n_p==vmr.nelem()") : (void)0); | |||
| 16252 | ||||
| 16253 | // Check that dimensions of pxsec are consistent with n_f | |||
| 16254 | // and n_p. It should be [n_f,n_p]: | |||
| 16255 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16255 , "n_f==pxsec.nrows()") : (void)0); | |||
| 16256 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16256 , "n_p==pxsec.ncols()") : (void)0); | |||
| 16257 | ||||
| 16258 | Numeric fac = 4.0 * PI / SPEED_OF_LIGHT; // = 4 * pi / c | |||
| 16259 | // Loop pressure/temperature: | |||
| 16260 | for ( Index i=0; i<n_p; ++i ) | |||
| 16261 | { | |||
| 16262 | Numeric th = 300.0 / abs_t[i]; | |||
| 16263 | Numeric strength = S0 * | |||
| 16264 | pow( (abs_p[i] * ((Numeric)1.0000 - abs_h2o[i])), | |||
| 16265 | (Numeric)2. ) | |||
| 16266 | * pow( th, xT ); | |||
| 16267 | ||||
| 16268 | // Loop frequency: | |||
| 16269 | for ( Index s=0; s<n_f; ++s ) | |||
| 16270 | { | |||
| 16271 | // FIXME Numeric f = f_grid[s] * Hz_to_GHz; // frequency in GHz | |||
| 16272 | // the vmr of N2 will be multiplied at the stage of absorption calculation: | |||
| 16273 | // abs / vmr * pxsec. | |||
| 16274 | pxsec(s,i) += fac * strength * // strength | |||
| 16275 | pow(f_grid[s], (Numeric)2.) / // frequency dependence | |||
| 16276 | ( 1.000 + G0 * pow( f_grid[s], xf) ) * | |||
| 16277 | vmr[i]; // N2 vmr | |||
| 16278 | } | |||
| 16279 | } | |||
| 16280 | return; | |||
| 16281 | } | |||
| 16282 | // | |||
| 16283 | // ################################################################################# | |||
| 16284 | //! Pardo_ATM_N2_dry_continuum | |||
| 16285 | /*! | |||
| 16286 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 16287 | N2-continuum according to Rosenkranz, 1993 [1/m] | |||
| 16288 | \param Cin continuum strength [1/m * 1/(Hz*Pa)²] | |||
| 16289 | \param model allows user defined input parameter set | |||
| 16290 | (Cin and xTin)<br> or choice of | |||
| 16291 | pre-defined parameters of specific models (see note below). | |||
| 16292 | \param f_grid predefined frequency grid [Hz] | |||
| 16293 | \param abs_p predefined pressure grid [Pa] | |||
| 16294 | \param abs_t predefined temperature grid [K] | |||
| 16295 | \param vmr N2 volume mixing ratio [1] | |||
| 16296 | \param h2ovmr H2O volume mixing ratio [1] | |||
| 16297 | ||||
| 16298 | \note Except for model 'user' the input parameters Cin and xTin | |||
| 16299 | are neglected (model dominates over parameters).<br> | |||
| 16300 | Allowed models: 'ATM', and 'user'. | |||
| 16301 | See the user guide for detailed explanations. | |||
| 16302 | ||||
| 16303 | \remark Reference: Pardo et al., IEEE, Trans. Ant. Prop., <br> | |||
| 16304 | Vol 49, No 12, pp. 1683-1694, 2001. | |||
| 16305 | ||||
| 16306 | \author Thomas Kuhn | |||
| 16307 | \date 2001-04-10 | |||
| 16308 | */ | |||
| 16309 | ||||
| 16310 | void Pardo_ATM_N2_dry_continuum (MatrixView pxsec, | |||
| 16311 | const Numeric Cin, | |||
| 16312 | const String& model, | |||
| 16313 | ConstVectorView f_grid, | |||
| 16314 | ConstVectorView abs_p, | |||
| 16315 | ConstVectorView abs_t, | |||
| 16316 | ConstVectorView vmr, | |||
| 16317 | ConstVectorView h2ovmr, | |||
| 16318 | const Verbosity& verbosity) | |||
| 16319 | { | |||
| 16320 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 16321 | ||||
| 16322 | // --------- STANDARD MODEL PARAMETERS --------------------------------------------------- | |||
| 16323 | // standard values for the Pardo et al. model (IEEE, Trans. Ant. Prop., | |||
| 16324 | // Vol 49, No 12, pp. 1683-1694, 2001) | |||
| 16325 | const Numeric C_ATM = 2.612e-6; // [1/m] | |||
| 16326 | // --------------------------------------------------------------------------------------- | |||
| 16327 | ||||
| 16328 | // select the parameter set (!!model dominates parameters!!): | |||
| 16329 | Numeric C; | |||
| 16330 | if ( model == "ATM" ) | |||
| 16331 | { | |||
| 16332 | C = C_ATM; | |||
| 16333 | } | |||
| 16334 | else if ( model == "user" ) | |||
| 16335 | { | |||
| 16336 | C = Cin; | |||
| 16337 | } | |||
| 16338 | else | |||
| 16339 | { | |||
| 16340 | ostringstream os; | |||
| 16341 | os << "N2-DryContATM01: ERROR! Wrong model values given.\n" | |||
| 16342 | << "allowed models are: 'ATM', 'user'" << '\n'; | |||
| 16343 | throw runtime_error(os.str()); | |||
| 16344 | } | |||
| 16345 | out3 << "N2-DryContATM01: (model=" << model << ") parameter values in use:\n" | |||
| 16346 | << " C_s = " << C << "\n"; | |||
| 16347 | ||||
| 16348 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 16349 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 16350 | ||||
| 16351 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 16352 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16352 , "n_p==abs_t.nelem()") : (void)0); | |||
| 16353 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16353 , "n_p==vmr.nelem()") : (void)0); | |||
| 16354 | ||||
| 16355 | // Check that dimensions of pxsec are consistent with n_f | |||
| 16356 | // and n_p. It should be [n_f,n_p]: | |||
| 16357 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16357 , "n_f==pxsec.nrows()") : (void)0); | |||
| 16358 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16358 , "n_p==pxsec.ncols()") : (void)0); | |||
| 16359 | ||||
| 16360 | // Loop over pressure/temperature grid: | |||
| 16361 | for ( Index i=0; i<n_p; ++i ) | |||
| 16362 | { | |||
| 16363 | // since this is an effective "dry air" continuum, it is not really | |||
| 16364 | // it is not specifically attributed to N2, so we need the total | |||
| 16365 | // dry air part in total which is equal to the total minus the | |||
| 16366 | // water vapor pressure: | |||
| 16367 | Numeric pd = abs_p[i] * ( 1.00000e0 - h2ovmr[i] ); // [Pa] | |||
| 16368 | // Loop over frequency grid: | |||
| 16369 | if (vmr[i] > VMRCalcLimit ) | |||
| 16370 | { | |||
| 16371 | for ( Index s=0; s<n_f; ++s ) | |||
| 16372 | { | |||
| 16373 | // Becaue this is an effective "dry air" continuum, it is not really | |||
| 16374 | // specific N2 but mainly caused by N2. Therefore the N2 vmr must be | |||
| 16375 | // canceled out here which is later in abs_coefCalc multiplied | |||
| 16376 | // (calculation: abs = vmr * pxsec): | |||
| 16377 | pxsec(s,i) += C * // strength [1/(m*Hz²Pa²)] | |||
| 16378 | pow( (f_grid[s]/(Numeric)2.25e11), (Numeric)2. ) * // quadratic f dependence [Hz²] | |||
| 16379 | pow( ((Numeric)300.0/abs_t[i]), (Numeric)3.5 ) * // free T dependence [1] | |||
| 16380 | pow( (pd/(Numeric)1.01300e5), (Numeric)2. ) / // quadratic p dependence [Pa²] | |||
| 16381 | vmr[i]; // cancel the vmr dependency | |||
| 16382 | } | |||
| 16383 | } | |||
| 16384 | } | |||
| 16385 | } | |||
| 16386 | // | |||
| 16387 | // ################################################################################# | |||
| 16388 | //! Rosenkranz_N2_self_continuum | |||
| 16389 | /*! | |||
| 16390 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 16391 | N2-continuum according to Rosenkranz, 1993 [1/m] | |||
| 16392 | \param Cin continuum strength [1/m * 1/(Hz*Pa)²] | |||
| 16393 | \param xin temperature exponent of N2-continuum [1] | |||
| 16394 | \param model allows user defined input parameter set | |||
| 16395 | (Cin and xTin)<br> or choice of | |||
| 16396 | pre-defined parameters of specific models (see note below). | |||
| 16397 | \param f_grid predefined frequency grid [Hz] | |||
| 16398 | \param abs_p predefined pressure grid [Pa] | |||
| 16399 | \param abs_t predefined temperature grid [K] | |||
| 16400 | \param vmr H2O volume mixing ratio [1] | |||
| 16401 | ||||
| 16402 | \note Except for model 'user' the input parameters Cin and xTin | |||
| 16403 | are neglected (model dominates over parameters).<br> | |||
| 16404 | Allowed models: 'Rosenkranz', and 'user'. | |||
| 16405 | See the user guide for detailed explanations. | |||
| 16406 | ||||
| 16407 | \remark Reference: P. W. Rosenkranz, Chapter 2, pp 74, in M. A. Janssen, <br> | |||
| 16408 | <I>Atmospheric Remote Sensing by Microwave Radiometry</i>,<br> | |||
| 16409 | John Wiley & Sons, Inc., 1993. | |||
| 16410 | ||||
| 16411 | \author Thomas Kuhn | |||
| 16412 | \date 2001-11-05 | |||
| 16413 | */ | |||
| 16414 | ||||
| 16415 | void Rosenkranz_N2_self_continuum (MatrixView pxsec, | |||
| 16416 | const Numeric Cin, | |||
| 16417 | const Numeric xin, | |||
| 16418 | const String& model, | |||
| 16419 | ConstVectorView f_grid, | |||
| 16420 | ConstVectorView abs_p, | |||
| 16421 | ConstVectorView abs_t, | |||
| 16422 | ConstVectorView vmr, | |||
| 16423 | const Verbosity& verbosity) | |||
| 16424 | { | |||
| 16425 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 16426 | ||||
| 16427 | // --------- STANDARD MODEL PARAMETERS --------------------------------------------------- | |||
| 16428 | // standard values for the Rosenkranz model (Chapter 2, pp 74, in M. A. Janssen, | |||
| 16429 | // "Atmospheric Remote Sensing by Microwave Radiometry", John Wiley & Sons, Inc., 1993 | |||
| 16430 | const Numeric C_PWR = 1.05e-38; // [1/(Pa²*Hz²*m)] | |||
| 16431 | const Numeric x_PWR = 3.55; // [1] | |||
| 16432 | // --------------------------------------------------------------------------------------- | |||
| 16433 | ||||
| 16434 | // select the parameter set (!!model dominates parameters!!): | |||
| 16435 | Numeric C, x; | |||
| 16436 | if ( model == "Rosenkranz" ) | |||
| 16437 | { | |||
| 16438 | C = C_PWR; | |||
| 16439 | x = x_PWR; | |||
| 16440 | } | |||
| 16441 | else if ( model == "user" ) | |||
| 16442 | { | |||
| 16443 | C = Cin; | |||
| 16444 | x = xin; | |||
| 16445 | } | |||
| 16446 | else | |||
| 16447 | { | |||
| 16448 | ostringstream os; | |||
| 16449 | os << "N2-SelfContPWR93: ERROR! Wrong model values given.\n" | |||
| 16450 | << "allowed models are: 'Rosenkranz', 'user'" << '\n'; | |||
| 16451 | throw runtime_error(os.str()); | |||
| 16452 | } | |||
| 16453 | out3 << "N2-SelfContPWR93: (model=" << model << ") parameter values in use:\n" | |||
| 16454 | << " C_s = " << C << "\n" | |||
| 16455 | << " x_s = " << x << "\n"; | |||
| 16456 | ||||
| 16457 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 16458 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 16459 | ||||
| 16460 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 16461 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16461 , "n_p==abs_t.nelem()") : (void)0); | |||
| 16462 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16462 , "n_p==vmr.nelem()") : (void)0); | |||
| 16463 | ||||
| 16464 | // Check that dimensions of pxsec are consistent with n_f | |||
| 16465 | // and n_p. It should be [n_f,n_p]: | |||
| 16466 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16466 , "n_f==pxsec.nrows()") : (void)0); | |||
| 16467 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16467 , "n_p==pxsec.ncols()") : (void)0); | |||
| 16468 | ||||
| 16469 | // Loop over pressure/temperature grid: | |||
| 16470 | for ( Index i=0; i<n_p; ++i ) | |||
| 16471 | { | |||
| 16472 | // Loop over frequency grid: | |||
| 16473 | for ( Index s=0; s<n_f; ++s ) | |||
| 16474 | { | |||
| 16475 | // The second vmr of N2 will be multiplied at the stage of absorption | |||
| 16476 | // calculation: abs = vmr * pxsec. | |||
| 16477 | pxsec(s,i) += C * // strength [1/(m*Hz²Pa²)] | |||
| 16478 | pow( f_grid[s], (Numeric)2. ) * // quadratic f dependence [Hz²] | |||
| 16479 | pow( (Numeric)300.0/abs_t[i], x ) * // free T dependence [1] | |||
| 16480 | pow( abs_p[i], (Numeric)2. ) * // quadratic p dependence [Pa²] | |||
| 16481 | vmr[i]; // second N2-VMR at the stage | |||
| 16482 | // of absorption calculation | |||
| 16483 | } | |||
| 16484 | } | |||
| 16485 | } | |||
| 16486 | // | |||
| 16487 | // ################################################################################# | |||
| 16488 | // | |||
| 16489 | //! 4) N2-N2 | |||
| 16490 | /*! | |||
| 16491 | P. W. Rosenkranz Chapter 2, pp 74, in M. A. Janssen, | |||
| 16492 | "Atmospheric Remote Sensing by Microwave Radiometry", John Wiley & Sons, Inc., 1993 | |||
| 16493 | ||||
| 16494 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 16495 | N2-continuum according to Rosenkranz, 1993 [1/m] | |||
| 16496 | \param Cin continuum strength [1/m * 1/(Hz*Pa)²] | |||
| 16497 | \param xfin continuum frequency exponent [1] | |||
| 16498 | \param xtin continuum strength temperature exponent [1] | |||
| 16499 | \param xpin continuum strength pressure exponent [1] | |||
| 16500 | \param model allows user defined input parameter set | |||
| 16501 | (Cin, xfin, xtin, and xpin)<br> or choice of | |||
| 16502 | pre-defined parameters of specific models (see note below). | |||
| 16503 | \param f_grid predefined frequency grid [Hz] | |||
| 16504 | \param abs_p predefined pressure grid [Pa] | |||
| 16505 | \param abs_t predefined temperature grid [K] | |||
| 16506 | \param vmr H2O volume mixing ratio [1] | |||
| 16507 | ||||
| 16508 | \note Except for model 'user' the input parameters Cin, xfin, xtin, and xpin | |||
| 16509 | are neglected (model dominates over parameters).<br> | |||
| 16510 | Allowed models: 'Rosenkranz', and 'user'. | |||
| 16511 | See the user guide for detailed explanations. | |||
| 16512 | ||||
| 16513 | \remark Reference: P. W. Rosenkranz, Chapter 2, in M. A. Janssen, <br> | |||
| 16514 | <I>Atmospheric Remote Sensing by Microwave Radiometry</i>,<br> | |||
| 16515 | John Wiley & Sons, Inc., 1993. | |||
| 16516 | ||||
| 16517 | \author Thomas Kuhn | |||
| 16518 | \date 2001-11-05 | |||
| 16519 | */ | |||
| 16520 | ||||
| 16521 | void Standard_N2_self_continuum (MatrixView pxsec, | |||
| 16522 | const Numeric Cin, | |||
| 16523 | const Numeric xfin, | |||
| 16524 | const Numeric xtin, | |||
| 16525 | const Numeric xpin, | |||
| 16526 | const String& model, | |||
| 16527 | ConstVectorView f_grid, | |||
| 16528 | ConstVectorView abs_p, | |||
| 16529 | ConstVectorView abs_t, | |||
| 16530 | ConstVectorView vmr, | |||
| 16531 | const Verbosity& verbosity) | |||
| 16532 | { | |||
| 16533 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 16534 | ||||
| 16535 | // --------- STANDARD MODEL PARAMETERS --------------------------------------------------- | |||
| 16536 | // standard values for the Rosenkranz model, Chapter 2, pp 74, in M. A. Janssen, | |||
| 16537 | // "Atmospheric Remote Sensing by Microwave Radiometry", John Wiley & Sons, Inc., 1993 | |||
| 16538 | const Numeric C_GM = 1.05e-38; // [1/(Pa²*Hz²*m)] | |||
| 16539 | const Numeric xf_GM = 2.00; // [1] | |||
| 16540 | const Numeric xt_GM = 3.55; // [1] | |||
| 16541 | const Numeric xp_GM = 2.00; // [1] | |||
| 16542 | // --------------------------------------------------------------------------------------- | |||
| 16543 | ||||
| 16544 | // select the parameter set (!!model dominates over values!!): | |||
| 16545 | Numeric C, xt, xf, xp; | |||
| 16546 | if ( model == "Rosenkranz" ) | |||
| 16547 | { | |||
| 16548 | C = C_GM; | |||
| 16549 | xt = xt_GM; | |||
| 16550 | xf = xf_GM; | |||
| 16551 | xp = xp_GM; | |||
| 16552 | } | |||
| 16553 | else if ( model == "user" ) | |||
| 16554 | { | |||
| 16555 | C = Cin; | |||
| 16556 | xt = xtin; | |||
| 16557 | xf = xfin; | |||
| 16558 | xp = xpin; | |||
| 16559 | } | |||
| 16560 | else | |||
| 16561 | { | |||
| 16562 | ostringstream os; | |||
| 16563 | os << "N2-SelfContStandardType: ERROR! Wrong model values given.\n" | |||
| 16564 | << "allowed models are: 'Rosenkranz', 'user'" << '\n'; | |||
| 16565 | throw runtime_error(os.str()); | |||
| 16566 | } | |||
| 16567 | out3 << "N2-SelfContStandardType: (model=" << model << ") parameter values in use:\n" | |||
| 16568 | << " C = " << C << "\n" | |||
| 16569 | << " xt = " << xt << "\n" | |||
| 16570 | << " xf = " << xf << "\n" | |||
| 16571 | << " xp = " << xp << "\n"; | |||
| 16572 | ||||
| 16573 | ||||
| 16574 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 16575 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 16576 | ||||
| 16577 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 16578 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16578 , "n_p==abs_t.nelem()") : (void)0); | |||
| 16579 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16579 , "n_p==vmr.nelem()") : (void)0); | |||
| 16580 | ||||
| 16581 | // Check that dimensions of pxsec are consistent with n_f | |||
| 16582 | // and n_p. It should be [n_f,n_p]: | |||
| 16583 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16583 , "n_f==pxsec.nrows()") : (void)0); | |||
| 16584 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16584 , "n_p==pxsec.ncols()") : (void)0); | |||
| 16585 | ||||
| 16586 | // Loop over pressure/temperature grid: | |||
| 16587 | for ( Index i=0; i<n_p; ++i ) | |||
| 16588 | { | |||
| 16589 | //cout << "vmr[" << i << "]= " << vmr[i] << "\n"; | |||
| 16590 | // Loop over frequency grid: | |||
| 16591 | for ( Index s=0; s<n_f; ++s ) | |||
| 16592 | { | |||
| 16593 | // The second N2-VMR will be multiplied at the stage of absorption | |||
| 16594 | // calculation: abs = vmr * pxsec. | |||
| 16595 | pxsec(s,i) += C * // strength [1/(m*Hz²Pa²)] | |||
| 16596 | pow( ((Numeric)300.00/abs_t[i]), xt ) * // T dependence [1] | |||
| 16597 | pow( f_grid[s], xf ) * // f dependence [Hz^xt] | |||
| 16598 | pow( abs_p[i], xp ) * // p dependence [Pa^xp] | |||
| 16599 | pow( vmr[i], (xp-(Numeric)1.) ); // last N2-VMR at the stage | |||
| 16600 | // of absorption calculation | |||
| 16601 | } | |||
| 16602 | } | |||
| 16603 | } | |||
| 16604 | ||||
| 16605 | ||||
| 16606 | ||||
| 16607 | ||||
| 16608 | ||||
| 16609 | // ############################################################################ | |||
| 16610 | // ############################## CARBON DIOXIDE MODELS ####################### | |||
| 16611 | // ############################################################################ | |||
| 16612 | ||||
| 16613 | // ############################################################################ | |||
| 16614 | //! Rosenkranz_CO2_self_continuum | |||
| 16615 | /*! | |||
| 16616 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 16617 | CO2-CO2-continuum according to Rosenkranz, 1993 [1/m] | |||
| 16618 | \param Cin continuum strength [1/m * 1/(Hz*Pa)²] | |||
| 16619 | \param xin continuum temperature exponent [1] | |||
| 16620 | \param model allows user defined input parameter set | |||
| 16621 | (Cin and xin)<br> or choice of | |||
| 16622 | pre-defined parameters of specific models (see note below). | |||
| 16623 | \param f_grid predefined frequency grid [Hz] | |||
| 16624 | \param abs_p predefined pressure grid [Pa] | |||
| 16625 | \param abs_t predefined temperature grid [K] | |||
| 16626 | \param vmr CO2 volume mixing ratio [1] | |||
| 16627 | ||||
| 16628 | \note Except for model 'user' the input parameters Cin and xin | |||
| 16629 | are neglected (model dominates over parameters).<br> | |||
| 16630 | Allowed models: 'Rosenkranz' and 'user'. | |||
| 16631 | See the user guide for detailed explanations. | |||
| 16632 | ||||
| 16633 | \remark Reference: P. W. Rosenkranz, Chapter 2, pp 74, pp 74, in M. A. Janssen, <br> | |||
| 16634 | <I>Atmospheric Remote Sensing by Microwave Radiometry</i>,<br> | |||
| 16635 | John Wiley & Sons, Inc., 1993. | |||
| 16636 | ||||
| 16637 | \author Thomas Kuhn | |||
| 16638 | \date 2001-11-05 | |||
| 16639 | */ | |||
| 16640 | ||||
| 16641 | void Rosenkranz_CO2_self_continuum (MatrixView pxsec, | |||
| 16642 | const Numeric Cin, | |||
| 16643 | const Numeric xin, | |||
| 16644 | const String& model, | |||
| 16645 | ConstVectorView f_grid, | |||
| 16646 | ConstVectorView abs_p, | |||
| 16647 | ConstVectorView abs_t, | |||
| 16648 | ConstVectorView vmr, | |||
| 16649 | const Verbosity& verbosity) | |||
| 16650 | { | |||
| 16651 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 16652 | ||||
| 16653 | // --------- STANDARD MODEL PARAMETERS --------------------------------------------------- | |||
| 16654 | // P. W. Rosenkranz Chapter 2, pp 74, in M. A. Janssen, | |||
| 16655 | // "Atmospheric Remote Sensing by Microwave Radiometry", John Wiley & Sons, Inc., 1993 | |||
| 16656 | const Numeric C_PWR = 7.43e-37; // [ 1/(Pa²*Hz²*m) ] | |||
| 16657 | const Numeric x_PWR = 5.08; // [ 1 ] | |||
| 16658 | // --------------------------------------------------------------------------------------- | |||
| 16659 | ||||
| 16660 | // select the parameter set (!!model dominates values!!): | |||
| 16661 | Numeric C, x; | |||
| 16662 | if ( model == "Rosenkranz" ) | |||
| 16663 | { | |||
| 16664 | C = C_PWR; | |||
| 16665 | x = x_PWR; | |||
| 16666 | } | |||
| 16667 | else if ( model == "user" ) | |||
| 16668 | { | |||
| 16669 | C = Cin; | |||
| 16670 | x = xin; | |||
| 16671 | } | |||
| 16672 | else | |||
| 16673 | { | |||
| 16674 | ostringstream os; | |||
| 16675 | os << "CO2-SelfContPWR93 : ERROR! Wrong model values given.\n" | |||
| 16676 | << "allowed models are: 'Rosenkranz', 'user'" << "\n"; | |||
| 16677 | throw runtime_error(os.str()); | |||
| 16678 | } | |||
| 16679 | ||||
| 16680 | out3 << "CO2-SelfContPWR93: (model=" << model << ") parameter values in use:\n" | |||
| 16681 | << " C = " << C << "\n" | |||
| 16682 | << " x = " << x << "\n"; | |||
| 16683 | ||||
| 16684 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 16685 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 16686 | ||||
| 16687 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 16688 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16688 , "n_p==abs_t.nelem()") : (void)0); | |||
| 16689 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16689 , "n_p==vmr.nelem()") : (void)0); | |||
| 16690 | ||||
| 16691 | // Check that dimensions of pxsec are consistent with n_f | |||
| 16692 | // and n_p. It should be [n_f,n_p]: | |||
| 16693 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16693 , "n_f==pxsec.nrows()") : (void)0); | |||
| 16694 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16694 , "n_p==pxsec.ncols()") : (void)0); | |||
| 16695 | ||||
| 16696 | // Loop over pressure/temperature grid: | |||
| 16697 | for ( Index i=0; i<n_p; ++i ) | |||
| 16698 | { | |||
| 16699 | // Dummy scalar holds everything except the quadratic frequency dependence. | |||
| 16700 | // The second vmr of CO2 will be multiplied at the stage of absorption | |||
| 16701 | // calculation: abs = vmr * pxsec. | |||
| 16702 | Numeric dummy = | |||
| 16703 | C * pow( (Numeric)300./abs_t[i], x ) * pow( abs_p[i], (Numeric)2. ) * vmr[i]; | |||
| 16704 | ||||
| 16705 | // Loop over frequency grid: | |||
| 16706 | for ( Index s=0; s<n_f; ++s ) | |||
| 16707 | { | |||
| 16708 | pxsec(s,i) += dummy * pow( f_grid[s], (Numeric)2. ); | |||
| 16709 | } | |||
| 16710 | } | |||
| 16711 | } | |||
| 16712 | ||||
| 16713 | // ############################################################################ | |||
| 16714 | //! Rosenkranz_CO2_foreign_continuum | |||
| 16715 | /*! | |||
| 16716 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 16717 | CO2-N2-continuum according to Rosenkranz, 1993 [1/m] | |||
| 16718 | \param Cin continuum strength [1/m * 1/(Hz*Pa)²] | |||
| 16719 | \param xin continuum temperature exponent [1] | |||
| 16720 | \param model allows user defined input parameter set | |||
| 16721 | (Cin and xin)<br> or choice of | |||
| 16722 | pre-defined parameters of specific models (see note below). | |||
| 16723 | \param f_grid predefined frequency grid [Hz] | |||
| 16724 | \param abs_p predefined pressure grid [Pa] | |||
| 16725 | \param abs_t predefined temperature grid [K] | |||
| 16726 | \param abs_n2 N2 volume mixing ratio profile [1] | |||
| 16727 | \param vmr CO2 volume mixing ratio profile [1] | |||
| 16728 | ||||
| 16729 | \note Except for model 'user' the input parameters Cin and xin | |||
| 16730 | are neglected (model dominates over parameters).<br> | |||
| 16731 | Allowed models: 'Rosenkranz' and 'user'. | |||
| 16732 | See the user guide for detailed explanations. | |||
| 16733 | ||||
| 16734 | \remark Reference: P. W. Rosenkranz, Chapter 2, pp 74, in M. A. Janssen, <br> | |||
| 16735 | <I>Atmospheric Remote Sensing by Microwave Radiometry</i>,<br> | |||
| 16736 | John Wiley & Sons, Inc., 1993. | |||
| 16737 | ||||
| 16738 | \author Thomas Kuhn | |||
| 16739 | \date 2001-11-05 | |||
| 16740 | */ | |||
| 16741 | ||||
| 16742 | void Rosenkranz_CO2_foreign_continuum (MatrixView pxsec, | |||
| 16743 | const Numeric Cin, | |||
| 16744 | const Numeric xin, | |||
| 16745 | const String& model, | |||
| 16746 | ConstVectorView f_grid, | |||
| 16747 | ConstVectorView abs_p, | |||
| 16748 | ConstVectorView abs_t, | |||
| 16749 | ConstVectorView abs_n2, | |||
| 16750 | ConstVectorView vmr _U___attribute((unused)), | |||
| 16751 | const Verbosity& verbosity) | |||
| 16752 | { | |||
| 16753 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 16754 | ||||
| 16755 | // --------- STANDARD MODEL PARAMETERS --------------------------------------------------- | |||
| 16756 | // "Atmospheric Remote Sensing by Microwave Radiometry", John Wiley & Sons, Inc., 1993 | |||
| 16757 | const Numeric C_PWR = 2.71e-37; // default: 2.71*10^-37 1/(Pa²*Hz²*m) | |||
| 16758 | const Numeric x_PWR = 4.7; // default: 4.7 | |||
| 16759 | // --------------------------------------------------------------------------------------- | |||
| 16760 | ||||
| 16761 | // select the parameter set (!!model dominates values!!): | |||
| 16762 | Numeric C, x; | |||
| 16763 | if ( model == "Rosenkranz" ) | |||
| 16764 | { | |||
| 16765 | C = C_PWR; | |||
| 16766 | x = x_PWR; | |||
| 16767 | } | |||
| 16768 | else if ( model == "user" ) | |||
| 16769 | { | |||
| 16770 | C = Cin; | |||
| 16771 | x = xin; | |||
| 16772 | } | |||
| 16773 | else | |||
| 16774 | { | |||
| 16775 | ostringstream os; | |||
| 16776 | os << "CO2-ForeignContPWR93: ERROR! Wrong model values given.\n" | |||
| 16777 | << "allowed models are: 'Rosenkranz', 'user'" << "\n"; | |||
| 16778 | throw runtime_error(os.str()); | |||
| 16779 | } | |||
| 16780 | ||||
| 16781 | out3 << "CO2-ForeignContPWR93: (model=" << model << ") parameter values in use:\n" | |||
| 16782 | << " C = " << C << "\n" | |||
| 16783 | << " x = " << x << "\n"; | |||
| 16784 | ||||
| 16785 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 16786 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 16787 | ||||
| 16788 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 16789 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16789 , "n_p==abs_t.nelem()") : (void)0); | |||
| 16790 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16790 , "n_p==vmr.nelem()") : (void)0); | |||
| 16791 | ||||
| 16792 | // Check that dimensions of pxsec are consistent with n_f | |||
| 16793 | // and n_p. It should be [n_f,n_p]: | |||
| 16794 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16794 , "n_f==pxsec.nrows()") : (void)0); | |||
| 16795 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16795 , "n_p==pxsec.ncols()") : (void)0); | |||
| 16796 | ||||
| 16797 | // Loop pressure/temperature: | |||
| 16798 | for ( Index i=0; i<n_p; ++i ) | |||
| 16799 | { | |||
| 16800 | // Dummy scalar holds everything except the quadratic frequency dependence. | |||
| 16801 | // The vmr of CO2 will be multiplied at the stage of absorption | |||
| 16802 | // calculation: abs = vmr * pxsec. | |||
| 16803 | Numeric dummy = C * pow( (Numeric)300./abs_t[i], x ) * abs_p[i] * abs_p[i] * abs_n2[i]; | |||
| 16804 | ||||
| 16805 | // Loop frequency: | |||
| 16806 | for ( Index s=0; s<n_f; ++s ) | |||
| 16807 | { | |||
| 16808 | pxsec(s,i) += dummy * pow( f_grid[s], (Numeric)2. ); | |||
| 16809 | } | |||
| 16810 | } | |||
| 16811 | } | |||
| 16812 | ||||
| 16813 | // ############################################################################ | |||
| 16814 | //! Ho66_CO2_self_continuum | |||
| 16815 | /*! | |||
| 16816 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 16817 | CO2-CO2-continuum according to Ho et al 1966 [1/m] | |||
| 16818 | \param Cin continuum strength [1/m * 1/(Hz*Pa)²] | |||
| 16819 | \param xin continuum temperature exponent [1] | |||
| 16820 | \param model allows user defined input parameter set | |||
| 16821 | (Cin and xin)<br> or choice of | |||
| 16822 | pre-defined parameters of specific models (see note below). | |||
| 16823 | \param f_grid predefined frequency grid [Hz] | |||
| 16824 | \param abs_p predefined pressure grid [Pa] | |||
| 16825 | \param abs_t predefined temperature grid [K] | |||
| 16826 | \param vmr CO2 volume mixing ratio [1] | |||
| 16827 | ||||
| 16828 | \note Except for model 'user' the input parameters Cin and xin | |||
| 16829 | are neglected (model dominates over parameters).<br> | |||
| 16830 | Allowed models: 'Ho66' and 'user'. | |||
| 16831 | See the user guide for detailed explanations. | |||
| 16832 | ||||
| 16833 | \remark Reference: Ho, Kaufman and Thaddeus, "Laboratory measurements of | |||
| 16834 | microwave absorption in models of the atmosphere of Venus", JGR, 1966. | |||
| 16835 | ||||
| 16836 | \author Patrick Eriksson (mainly by copying Thomas PWR function) | |||
| 16837 | \date 2013-10-15 | |||
| 16838 | */ | |||
| 16839 | ||||
| 16840 | void Ho66_CO2_self_continuum (MatrixView pxsec, | |||
| 16841 | const Numeric Cin, | |||
| 16842 | const Numeric xin, | |||
| 16843 | const String& model, | |||
| 16844 | ConstVectorView f_grid, | |||
| 16845 | ConstVectorView abs_p, | |||
| 16846 | ConstVectorView abs_t, | |||
| 16847 | ConstVectorView vmr, | |||
| 16848 | const Verbosity& verbosity) | |||
| 16849 | { | |||
| 16850 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 16851 | ||||
| 16852 | // --------- STANDARD MODEL PARAMETERS -------------------------------------- | |||
| 16853 | // Values (after conversion for C) from abstract of Ho66: | |||
| 16854 | const Numeric C_Ho66 = 1.70e-36; // [ 1/(Pa²*Hz²*m) ] | |||
| 16855 | const Numeric x_Ho66 = 5; // [ 1 ] | |||
| 16856 | // -------------------------------------------------------------------------- | |||
| 16857 | ||||
| 16858 | // select the parameter set (!!model dominates values!!): | |||
| 16859 | Numeric C, x; | |||
| 16860 | if ( model == "Ho66" ) | |||
| 16861 | { | |||
| 16862 | C = C_Ho66; | |||
| 16863 | x = x_Ho66; | |||
| 16864 | } | |||
| 16865 | else if ( model == "user" ) | |||
| 16866 | { | |||
| 16867 | C = Cin; | |||
| 16868 | x = xin; | |||
| 16869 | } | |||
| 16870 | else | |||
| 16871 | { | |||
| 16872 | ostringstream os; | |||
| 16873 | os << "CO2-SelfContHo66 : ERROR! Wrong model values given.\n" | |||
| 16874 | << "allowed models are: 'Ho66', 'user'" << "\n"; | |||
| 16875 | throw runtime_error(os.str()); | |||
| 16876 | } | |||
| 16877 | ||||
| 16878 | out3 << "CO2-SelfContHo66: (model=" << model | |||
| 16879 | << ") parameter values in use:\n" << " C = " << C << "\n" | |||
| 16880 | << " x = " << x << "\n"; | |||
| 16881 | ||||
| 16882 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 16883 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 16884 | ||||
| 16885 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 16886 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16886 , "n_p==abs_t.nelem()") : (void)0); | |||
| 16887 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16887 , "n_p==vmr.nelem()") : (void)0); | |||
| 16888 | ||||
| 16889 | // Check that dimensions of pxsec are consistent with n_f | |||
| 16890 | // and n_p. It should be [n_f,n_p]: | |||
| 16891 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16891 , "n_f==pxsec.nrows()") : (void)0); | |||
| 16892 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16892 , "n_p==pxsec.ncols()") : (void)0); | |||
| 16893 | ||||
| 16894 | // Loop over pressure/temperature grid: | |||
| 16895 | for ( Index i=0; i<n_p; ++i ) | |||
| 16896 | { | |||
| 16897 | // Dummy scalar holds everything except the quadratic frequency | |||
| 16898 | // dependence. The second vmr of CO2 will be multiplied at the stage of | |||
| 16899 | // absorption calculation: abs = vmr * pxsec. | |||
| 16900 | ||||
| 16901 | Numeric dummy = C * pow( (Numeric)273./abs_t[i], x ) * | |||
| 16902 | pow( abs_p[i], (Numeric)2. ) * vmr[i]; | |||
| 16903 | ||||
| 16904 | // Loop over frequency grid: | |||
| 16905 | for ( Index s=0; s<n_f; ++s ) | |||
| 16906 | { pxsec(s,i) += dummy * pow( f_grid[s], (Numeric)2. ); } | |||
| 16907 | } | |||
| 16908 | } | |||
| 16909 | ||||
| 16910 | // ############################################################################ | |||
| 16911 | //! Ho66_CO2_foreign_continuum | |||
| 16912 | /*! | |||
| 16913 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 16914 | CO2-CO2-continuum according to Ho et al 1966 [1/m] | |||
| 16915 | \param Cin continuum strength [1/m * 1/(Hz*Pa)²] | |||
| 16916 | \param xin continuum temperature exponent [1] | |||
| 16917 | \param model allows user defined input parameter set | |||
| 16918 | (Cin and xin)<br> or choice of | |||
| 16919 | pre-defined parameters of specific models (see note below). | |||
| 16920 | \param f_grid predefined frequency grid [Hz] | |||
| 16921 | \param abs_p predefined pressure grid [Pa] | |||
| 16922 | \param abs_t predefined temperature grid [K] | |||
| 16923 | \param abs_n2 N2 volume mixing ratio profile [1] | |||
| 16924 | \param vmr CO2 volume mixing ratio profile [1] | |||
| 16925 | ||||
| 16926 | \note Except for model 'user' the input parameters Cin and xin | |||
| 16927 | are neglected (model dominates over parameters).<br> | |||
| 16928 | Allowed models: 'Ho66' and 'user'. | |||
| 16929 | See the user guide for detailed explanations. | |||
| 16930 | ||||
| 16931 | \remark Reference: Ho, Kaufman and Thaddeus, "Laboratory measurements of | |||
| 16932 | microwave absorption in models of the atmosphere of Venus", JGR, 1966. | |||
| 16933 | ||||
| 16934 | \author Patrick Eriksson (mainly by copying Thomas PWR function) | |||
| 16935 | \date 2013-10-15 | |||
| 16936 | */ | |||
| 16937 | ||||
| 16938 | void Ho66_CO2_foreign_continuum (MatrixView pxsec, | |||
| 16939 | const Numeric Cin, | |||
| 16940 | const Numeric xin, | |||
| 16941 | const String& model, | |||
| 16942 | ConstVectorView f_grid, | |||
| 16943 | ConstVectorView abs_p, | |||
| 16944 | ConstVectorView abs_t, | |||
| 16945 | ConstVectorView abs_n2, | |||
| 16946 | ConstVectorView vmr _U___attribute((unused)), | |||
| 16947 | const Verbosity& verbosity) | |||
| 16948 | { | |||
| 16949 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 16950 | ||||
| 16951 | // --------- STANDARD MODEL PARAMETERS -------------------------------------- | |||
| 16952 | // Values (after conversion for C) from abstract of Ho66: | |||
| 16953 | const Numeric C_Ho66 = 4.23e-37; // [ 1/(Pa²*Hz²*m) ] | |||
| 16954 | const Numeric x_Ho66 = 5; // [ 1 ] | |||
| 16955 | // -------------------------------------------------------------------------- | |||
| 16956 | ||||
| 16957 | // select the parameter set (!!model dominates values!!): | |||
| 16958 | Numeric C, x; | |||
| 16959 | if ( model == "Ho66" ) | |||
| 16960 | { | |||
| 16961 | C = C_Ho66; | |||
| 16962 | x = x_Ho66; | |||
| 16963 | } | |||
| 16964 | else if ( model == "user" ) | |||
| 16965 | { | |||
| 16966 | C = Cin; | |||
| 16967 | x = xin; | |||
| 16968 | } | |||
| 16969 | else | |||
| 16970 | { | |||
| 16971 | ostringstream os; | |||
| 16972 | os << "CO2-ForeignContHo66: ERROR! Wrong model values given.\n" | |||
| 16973 | << "allowed models are: 'Ho66', 'user'" << "\n"; | |||
| 16974 | throw runtime_error(os.str()); | |||
| 16975 | } | |||
| 16976 | ||||
| 16977 | out3 << "CO2-ForeignContHo66: (model=" << model | |||
| 16978 | << ") parameter values in use:\n" << " C = " << C << "\n" | |||
| 16979 | << " x = " << x << "\n"; | |||
| 16980 | ||||
| 16981 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 16982 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 16983 | ||||
| 16984 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 16985 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16985 , "n_p==abs_t.nelem()") : (void)0); | |||
| 16986 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16986 , "n_p==vmr.nelem()") : (void)0); | |||
| 16987 | ||||
| 16988 | // Check that dimensions of pxsec are consistent with n_f | |||
| 16989 | // and n_p. It should be [n_f,n_p]: | |||
| 16990 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16990 , "n_f==pxsec.nrows()") : (void)0); | |||
| 16991 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 16991 , "n_p==pxsec.ncols()") : (void)0); | |||
| 16992 | ||||
| 16993 | // Loop pressure/temperature: | |||
| 16994 | for ( Index i=0; i<n_p; ++i ) | |||
| 16995 | { | |||
| 16996 | // Dummy scalar holds everything except the quadratic frequency | |||
| 16997 | // dependence The vmr of CO2 will be multiplied at the stage of | |||
| 16998 | // absorption calculation: abs = vmr * pxsec. | |||
| 16999 | Numeric dummy = C * pow( (Numeric)273./abs_t[i], x ) * | |||
| 17000 | abs_p[i] * abs_p[i] * abs_n2[i]; | |||
| 17001 | ||||
| 17002 | // Loop frequency: | |||
| 17003 | for ( Index s=0; s<n_f; ++s ) | |||
| 17004 | { pxsec(s,i) += dummy * pow( f_grid[s], (Numeric)2. ); } | |||
| 17005 | } | |||
| 17006 | } | |||
| 17007 | ||||
| 17008 | ||||
| 17009 | ||||
| 17010 | ||||
| 17011 | ||||
| 17012 | ||||
| 17013 | // ############################################################################ | |||
| 17014 | // ################################### CLOUD AND RAIN MODELS ################## | |||
| 17015 | // ############################################################################ | |||
| 17016 | //! MPM93WaterDropletAbs | |||
| 17017 | /*! | |||
| 17018 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 17019 | water clouds according to MPM93 [1/m] | |||
| 17020 | \param CCin scaling parameter of the calculated cross section [1] | |||
| 17021 | \param CGin scaling parameter of the first relaxation frequency | |||
| 17022 | (gamma_1, see page 3-6 in the reference) [1] | |||
| 17023 | \param CEin scaling parameter of the first permittivity component | |||
| 17024 | (epsilon_0, see page 3-6 in the reference) [1] | |||
| 17025 | \param model allows user defined input parameter | |||
| 17026 | (CCin, CGin, CEin)<br> or choice of | |||
| 17027 | pre-defined parameters of specific models (see note below). | |||
| 17028 | \param f_grid predefined frequency grid [Hz] | |||
| 17029 | \param abs_p predefined pressure grid [Pa] | |||
| 17030 | \param abs_t predefined temperature grid [K] | |||
| 17031 | \param vmr suspended water droplet density profile [kg/m³] | |||
| 17032 | (valid range (Tab.1 of reference): 0-0.005) | |||
| 17033 | ||||
| 17034 | \note Except for model 'user' the input parameters CCin, CGin, and CEin | |||
| 17035 | are neglected (model dominates over parameters).<br> | |||
| 17036 | Allowed models: 'MPM93' and 'user'. | |||
| 17037 | See the user guide for detailed explanations. | |||
| 17038 | ||||
| 17039 | \remark Reference: H. J. Liebe and G. A. Hufford and M. G. Cotton,<br> | |||
| 17040 | <i>Propagation modeling of moist air and suspended water/ice | |||
| 17041 | particles at frequencies below 1000 GHz</i>,<br> | |||
| 17042 | AGARD 52nd Specialists Meeting of the Electromagnetic Wave | |||
| 17043 | Propagation Panel,<br> Palma de Mallorca, Spain, 1993, May 17-21. | |||
| 17044 | ||||
| 17045 | \author Thomas Kuhn | |||
| 17046 | \date 2001-11-05 | |||
| 17047 | */ | |||
| 17048 | void MPM93WaterDropletAbs (MatrixView pxsec, | |||
| 17049 | const Numeric CCin, // input parameter | |||
| 17050 | const Numeric CGin, // input parameter | |||
| 17051 | const Numeric CEin, // input parameter | |||
| 17052 | const String& model, // model | |||
| 17053 | ConstVectorView f_grid, // frequency vector | |||
| 17054 | ConstVectorView abs_p, // pressure vector | |||
| 17055 | ConstVectorView abs_t, // temperature vector | |||
| 17056 | ConstVectorView vmr, // suspended water droplet density vector | |||
| 17057 | const Verbosity& ) | |||
| 17058 | { | |||
| 17059 | // --------- STANDARD MODEL PARAMETERS ------------------------------------------------ | |||
| 17060 | // standard values for the MPM93 model (J. Liebe and G. A. Hufford and M. G. Cotton, | |||
| 17061 | // "Propagation modeling of moist air and suspended water/ice | |||
| 17062 | // particles at frequencies below 1000 GHz", | |||
| 17063 | // AGARD 52nd Specialists Meeting of the Electromagnetic Wave | |||
| 17064 | // Propagation Panel, Palma de Mallorca, Spain, 1993, May 17-21) | |||
| 17065 | const Numeric CC_MPM93 = 1.00000; | |||
| 17066 | const Numeric CG_MPM93 = 1.00000; | |||
| 17067 | const Numeric CE_MPM93 = 1.00000; | |||
| 17068 | // ------------------------------------------------------------------------------------ | |||
| 17069 | ||||
| 17070 | ||||
| 17071 | // select the parameter set (!!model dominates values!!): | |||
| 17072 | Numeric CC, CG, CE; | |||
| 17073 | if ( model == "MPM93" ) | |||
| 17074 | { | |||
| 17075 | CC = CC_MPM93; | |||
| 17076 | CG = CG_MPM93; | |||
| 17077 | CE = CE_MPM93; | |||
| 17078 | } | |||
| 17079 | else if ( model == "user" ) | |||
| 17080 | { | |||
| 17081 | CC = CCin; | |||
| 17082 | CG = CGin; | |||
| 17083 | CE = CEin; | |||
| 17084 | } | |||
| 17085 | else | |||
| 17086 | { | |||
| 17087 | ostringstream os; | |||
| 17088 | os << "liquidcloud-MPM93: ERROR! Wrong model values given.\n" | |||
| 17089 | << "Valid models are: \"MPM93\" and \"user\""; | |||
| 17090 | throw runtime_error(os.str()); | |||
| 17091 | } | |||
| 17092 | ||||
| 17093 | ||||
| 17094 | const Numeric m = 1.00e3; // specific weight of the droplet, fixed value: 1.00e3 kg/m3 | |||
| 17095 | const Numeric low_lim_den = -LIQUID_AND_ICE_TREAT_AS_ZERO; // lower limit of suspended droplet particle density vector [kg/m3] | |||
| 17096 | const Numeric high_lim_den = 5.00e-3; // upper limit of suspended droplet particle density vector [kg/m3] | |||
| 17097 | ||||
| 17098 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 17099 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 17100 | ||||
| 17101 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 17102 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 17102 , "n_p==abs_t.nelem()") : (void)0); | |||
| 17103 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 17103 , "n_p==vmr.nelem()") : (void)0); | |||
| 17104 | ||||
| 17105 | // Check that dimensions of pxsec are consistent with n_f | |||
| 17106 | // and n_p. It should be [n_f,n_p]: | |||
| 17107 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 17107 , "n_f==pxsec.nrows()") : (void)0); | |||
| 17108 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 17108 , "n_p==pxsec.ncols()") : (void)0); | |||
| 17109 | ||||
| 17110 | // Loop pressure/temperature: | |||
| 17111 | for ( Index i=0; i<n_p; ++i ) | |||
| 17112 | { | |||
| 17113 | // Check limits of suspended water droplet density ("vmr") [kg/m³] | |||
| 17114 | if( (vmr[i] < low_lim_den) || (vmr[i] > high_lim_den) ) | |||
| 17115 | { | |||
| 17116 | ostringstream os; | |||
| 17117 | os << "ERROR in MPM93WaterDropletAbs:\n" | |||
| 17118 | << "Valid range is " << low_lim_den << "-" << low_lim_den << "kg/m3,\n" | |||
| 17119 | << "but found a value = " << vmr[i]; | |||
| 17120 | throw runtime_error(os.str()); | |||
| 17121 | } | |||
| 17122 | ||||
| 17123 | else if( vmr[i] < LIQUID_AND_ICE_TREAT_AS_ZERO ) | |||
| 17124 | { | |||
| 17125 | pxsec(joker,i) = 0; | |||
| 17126 | } | |||
| 17127 | ||||
| 17128 | else | |||
| 17129 | { | |||
| 17130 | // relative inverse temperature [1] | |||
| 17131 | Numeric theta = 300.000 / abs_t[i]; | |||
| 17132 | // relaxation frequencies [GHz] | |||
| 17133 | Numeric gamma1 = CG * 20.20 - 146.40*(theta-1.000) + 316.00*(theta-1.000)*(theta-1.000); | |||
| 17134 | // Numeric gamma1 = 20.1 * exp( 7.88 * theta ); // see Liebe et al. IJIMW, 1992, p667, Eq. (2b) | |||
| 17135 | Numeric gamma2 = 39.80 * gamma1; | |||
| 17136 | // static and high-frequency permittivities | |||
| 17137 | Numeric epsilon0 = CE * 103.30 * (theta-1.000) + 77.66; | |||
| 17138 | Numeric epsilon1 = 0.0671 * epsilon0; | |||
| 17139 | Numeric epsilon2 = 3.52; | |||
| 17140 | ||||
| 17141 | // Loop frequency: | |||
| 17142 | for ( Index s=0; s<n_f; ++s ) | |||
| 17143 | { | |||
| 17144 | // real part of the complex permittivity of water (double-debye model) | |||
| 17145 | Numeric Reepsilon = epsilon0 - | |||
| 17146 | pow((f_grid[s]*Hz_to_GHz),(Numeric)2.) * | |||
| 17147 | ( ((epsilon0-epsilon1)/ | |||
| 17148 | (pow((f_grid[s]*Hz_to_GHz),(Numeric)2.) | |||
| 17149 | + pow(gamma1,(Numeric)2.))) + | |||
| 17150 | ((epsilon1-epsilon2)/ | |||
| 17151 | (pow((f_grid[s]*Hz_to_GHz),(Numeric)2.) | |||
| 17152 | + pow(gamma2,(Numeric)2.))) ); | |||
| 17153 | // imaginary part of the complex permittivity of water (double-debye model) | |||
| 17154 | Numeric Imepsilon = (f_grid[s]*Hz_to_GHz) * | |||
| 17155 | ( (gamma1*(epsilon0-epsilon1)/ | |||
| 17156 | (pow((f_grid[s]*Hz_to_GHz),(Numeric)2.) | |||
| 17157 | + pow(gamma1,(Numeric)2.))) + | |||
| 17158 | (gamma2*(epsilon1-epsilon2)/ | |||
| 17159 | (pow((f_grid[s]*Hz_to_GHz),(Numeric)2.) | |||
| 17160 | + pow(gamma2,(Numeric)2.))) ); | |||
| 17161 | // the imaginary part of the complex refractivity of suspended liquid water particle [ppm] | |||
| 17162 | // In MPM93 w is in g/m³ and m is in g/cm³. Because of the units used in arts, | |||
| 17163 | // a factor of 1.000e6 must be multiplied with the ratio (w/m): | |||
| 17164 | // MPM93: (w/m)_MPM93 in (g/m³)/(g/cm³) | |||
| 17165 | // arts: (w/m)_arts in (kg/m³)/(kg/m³) | |||
| 17166 | // =====> (w/m)_MPM93 = 1.0e6 * (w/m)_arts | |||
| 17167 | // the factor of 1.0e6 is included below in pxsec calculation. | |||
| 17168 | Numeric ImNw = 1.500 / m * | |||
| 17169 | ( 3.000 * Imepsilon | |||
| 17170 | / ( pow((Reepsilon+(Numeric)2.000),(Numeric)2.) | |||
| 17171 | + pow(Imepsilon,(Numeric)2.) ) ); | |||
| 17172 | // liquid water particle absorption cross section [1/m] | |||
| 17173 | // The vmr of H2O will be multiplied at the stage of absorption | |||
| 17174 | // calculation: abs = vmr * pxsec. | |||
| 17175 | // pxsec = abs/vmr [1/m] but MPM93 is in [dB/km] --> conversion necessary | |||
| 17176 | pxsec(s,i) += CC * 1.000e6 * dB_km_to_1_m * 0.1820 * (f_grid[s]*Hz_to_GHz) * ImNw; | |||
| 17177 | } | |||
| 17178 | } | |||
| 17179 | } | |||
| 17180 | } | |||
| 17181 | ||||
| 17182 | ||||
| 17183 | // | |||
| 17184 | // ################################################################################# | |||
| 17185 | //! ELL07WaterDropletAbs | |||
| 17186 | /*! | |||
| 17187 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 17188 | water clouds according to ELL07 [1/m] | |||
| 17189 | \param model allows choice of | |||
| 17190 | pre-defined parameters of specific models (see note below). | |||
| 17191 | \param f_grid predefined frequency grid [Hz] | |||
| 17192 | \param abs_p predefined pressure grid [Pa] | |||
| 17193 | \param abs_t predefined temperature grid [K] | |||
| 17194 | \param vmr suspended water droplet density profile [kg/m³] | |||
| 17195 | (valid range (Tab.1 of MPM93): 0-0.005) | |||
| 17196 | ||||
| 17197 | \note Allowed models: 'ELL07'. | |||
| 17198 | See the user guide for detailed explanations. | |||
| 17199 | ||||
| 17200 | \remark Reference: W. J. Ellison, <br> | |||
| 17201 | <i>Permittivity of Pure Water, at Standard Atmospheric Pressure, over the | |||
| 17202 | Frequency Range 0-25 THz and Temperature Range 0-100C</i>,<br> | |||
| 17203 | J. Phys. Chem. Ref. Data, Vol. 36, No. 1, 2007 | |||
| 17204 | ||||
| 17205 | \author Stuart Fox | |||
| 17206 | \date 2015-06-03 | |||
| 17207 | */ | |||
| 17208 | ||||
| 17209 | void ELL07WaterDropletAbs (MatrixView pxsec, | |||
| 17210 | const String& model, // model | |||
| 17211 | ConstVectorView f_grid, // frequency vector | |||
| 17212 | ConstVectorView abs_p, // pressure vector | |||
| 17213 | ConstVectorView abs_t, // temperature vector | |||
| 17214 | ConstVectorView vmr, // suspended water droplet density vector | |||
| 17215 | const Verbosity& ) | |||
| 17216 | { | |||
| 17217 | if (model != "ELL07") | |||
| 17218 | { | |||
| 17219 | ostringstream os; | |||
| 17220 | os << "liquidcloud-ELL07: ERROR! Wrong model values given.\n" | |||
| 17221 | << "Valid models are: \"ELL07\""; | |||
| 17222 | throw runtime_error(os.str()); | |||
| 17223 | } | |||
| 17224 | ||||
| 17225 | ||||
| 17226 | const Numeric m = 1.00e3; // specific weight of the droplet, fixed value: 1.00e3 kg/m3 | |||
| 17227 | const Numeric low_lim_den = -LIQUID_AND_ICE_TREAT_AS_ZERO; // lower limit of suspended droplet particle density vector [kg/m3] | |||
| 17228 | const Numeric high_lim_den = 5.00e-3; // upper limit of suspended droplet particle density vector [kg/m3] | |||
| 17229 | ||||
| 17230 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 17231 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 17232 | ||||
| 17233 | // ELL07 model parameters - table 2 in Ellison (2007) | |||
| 17234 | const Numeric a1=79.23882; | |||
| 17235 | const Numeric a2=3.815866; | |||
| 17236 | const Numeric a3=1.634967; | |||
| 17237 | const Numeric tc=133.1383; | |||
| 17238 | const Numeric b1=0.004300598; | |||
| 17239 | const Numeric b2=0.01117295; | |||
| 17240 | const Numeric b3=0.006841548; | |||
| 17241 | const Numeric c1=1.382264e-13; | |||
| 17242 | const Numeric c2=3.510354e-16; | |||
| 17243 | const Numeric c3=6.30035e-15; | |||
| 17244 | const Numeric d1=652.7648; | |||
| 17245 | const Numeric d2=1249.533; | |||
| 17246 | const Numeric d3=405.5169; | |||
| 17247 | const Numeric p0=0.8379692; | |||
| 17248 | const Numeric p1=-0.006118594; | |||
| 17249 | const Numeric p2=-0.000012936798; | |||
| 17250 | const Numeric p3=4235901000000.0; | |||
| 17251 | const Numeric p4=-14260880000.0; | |||
| 17252 | const Numeric p5=273815700.0; | |||
| 17253 | const Numeric p6=-1246943.0; | |||
| 17254 | const Numeric p7=9.618642e-14; | |||
| 17255 | const Numeric p8=1.795786e-16; | |||
| 17256 | const Numeric p9=-9.310017E-18; | |||
| 17257 | const Numeric p10=1.655473e-19; | |||
| 17258 | const Numeric p11=0.6165532; | |||
| 17259 | const Numeric p12=0.007238532; | |||
| 17260 | const Numeric p13=-0.00009523366; | |||
| 17261 | const Numeric p14=15983170000000.0; | |||
| 17262 | const Numeric p15=-74413570000.0; | |||
| 17263 | const Numeric p16=497448000.0; | |||
| 17264 | const Numeric p17=2.882476e-14; | |||
| 17265 | const Numeric p18=-3.142118e-16; | |||
| 17266 | const Numeric p19=3.528051e-18; | |||
| 17267 | ||||
| 17268 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 17269 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 17269 , "n_p==abs_t.nelem()") : (void)0); | |||
| 17270 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 17270 , "n_p==vmr.nelem()") : (void)0); | |||
| 17271 | ||||
| 17272 | // Check that dimensions of pxsec are consistent with n_f | |||
| 17273 | // and n_p. It should be [n_f,n_p]: | |||
| 17274 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 17274 , "n_f==pxsec.nrows()") : (void)0); | |||
| 17275 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 17275 , "n_p==pxsec.ncols()") : (void)0); | |||
| 17276 | ||||
| 17277 | // Loop pressure/temperature: | |||
| 17278 | for ( Index i=0; i<n_p; ++i ) | |||
| 17279 | { | |||
| 17280 | // Check limits of suspended water droplet density ("vmr") [kg/m³] | |||
| 17281 | if( (vmr[i] < low_lim_den) || (vmr[i] > high_lim_den) ) | |||
| 17282 | { | |||
| 17283 | ostringstream os; | |||
| 17284 | os << "ERROR in ELL07WaterDropletAbs:\n" | |||
| 17285 | << "Valid range is " << low_lim_den << "-" << low_lim_den << "kg/m3,\n" | |||
| 17286 | << "but found a value = " << vmr[i]; | |||
| 17287 | throw runtime_error(os.str()); | |||
| 17288 | } | |||
| 17289 | ||||
| 17290 | else if( vmr[i] < LIQUID_AND_ICE_TREAT_AS_ZERO ) | |||
| 17291 | { | |||
| 17292 | pxsec(joker,i) = 0; | |||
| 17293 | } | |||
| 17294 | ||||
| 17295 | else | |||
| 17296 | { | |||
| 17297 | // Temperature in celsius | |||
| 17298 | Numeric t_cels = abs_t[i]-273.15; | |||
| 17299 | // static permittivity | |||
| 17300 | Numeric epsilon_s = 87.9144-0.404399*t_cels-9.58726e-4*pow(t_cels,(Numeric)2.) - | |||
| 17301 | 1.32802e-6*pow(t_cels,(Numeric)3.); | |||
| 17302 | // Model parameters | |||
| 17303 | Numeric delta1=a1*exp(-b1*t_cels); | |||
| 17304 | Numeric delta2=a2*exp(-b2*t_cels); | |||
| 17305 | Numeric delta3=a3*exp(-b3*t_cels); | |||
| 17306 | Numeric tau1=c1*exp(d1/(t_cels+tc)); | |||
| 17307 | Numeric tau2=c2*exp(d2/(t_cels+tc)); | |||
| 17308 | Numeric tau3=c3*exp(d3/(t_cels+tc)); | |||
| 17309 | Numeric delta4=p0 + p1*t_cels + p2*pow(t_cels, (Numeric)2.); | |||
| 17310 | Numeric f0=p3 + p4*t_cels + p5*pow(t_cels, (Numeric)2.) + p6*pow(t_cels, (Numeric)3.); | |||
| 17311 | Numeric tau4=p7+p8*t_cels + p9*pow(t_cels, (Numeric)2.) + p10*pow(t_cels, (Numeric)3.); | |||
| 17312 | Numeric delta5=p11 + p12*t_cels + p13*pow(t_cels, (Numeric)2.); | |||
| 17313 | Numeric f1=p14 + p15*t_cels + p16*pow(t_cels, (Numeric)2.); | |||
| 17314 | Numeric tau5=p17 + p18*t_cels + p19*pow(t_cels, (Numeric)2.); | |||
| 17315 | ||||
| 17316 | // Loop frequency: | |||
| 17317 | for ( Index s=0; s<n_f; ++s ) | |||
| 17318 | { | |||
| 17319 | // real part of the complex permittivity of water (triple-debye + 2 resonances) | |||
| 17320 | Numeric Reepsilon = epsilon_s - pow(((Numeric)2.*PI*f_grid[s]),(Numeric)2.)* | |||
| 17321 | (pow(tau1,(Numeric)2.)*delta1/((Numeric)1.+pow((Numeric)2.*PI*f_grid[s]*tau1, (Numeric)2.)) + | |||
| 17322 | pow(tau2,(Numeric)2.)*delta2/((Numeric)1.+pow((Numeric)2.*PI*f_grid[s]*tau2, (Numeric)2.)) + | |||
| 17323 | pow(tau3,(Numeric)2.)*delta3/((Numeric)1.+pow((Numeric)2.*PI*f_grid[s]*tau3, (Numeric)2.))) - | |||
| 17324 | pow((Numeric)2.*PI*tau4,(Numeric)2.)*delta4/(Numeric)2.*(f_grid[s]*(f0+f_grid[s]) / | |||
| 17325 | ((Numeric)1.+pow((Numeric)2.*PI*tau4*(f0+f_grid[s]),(Numeric)2.)) - | |||
| 17326 | f_grid[s]*(f0-f_grid[s]) / | |||
| 17327 | ((Numeric)1.+pow((Numeric)2.*PI*tau4*(f0-f_grid[s]),(Numeric)2.))) - | |||
| 17328 | pow((Numeric)2.*PI*tau5,(Numeric)2.)*delta5/(Numeric)2.*(f_grid[s]*(f1+f_grid[s]) / | |||
| 17329 | ((Numeric)1.+pow((Numeric)2.*PI*tau5*(f1+f_grid[s]),(Numeric)2.)) - | |||
| 17330 | f_grid[s]*(f1-f_grid[s]) / | |||
| 17331 | ((Numeric)1.+pow((Numeric)2.*PI*tau5*(f1-f_grid[s]),(Numeric)2.))); | |||
| 17332 | // imaginary part of the complex permittivity of water (triple-debye + 2 resonances) | |||
| 17333 | Numeric Imepsilon = 2*PI*f_grid[s]*(tau1*delta1/((Numeric)1.+pow((Numeric)2.*PI*f_grid[s]*tau1, (Numeric)2.)) + | |||
| 17334 | tau2*delta2/((Numeric)1.+pow((Numeric)2.*PI*f_grid[s]*tau2, (Numeric)2.)) + | |||
| 17335 | tau3*delta3/((Numeric)1.+pow((Numeric)2.*PI*f_grid[s]*tau3, (Numeric)2.))) + | |||
| 17336 | PI*f_grid[s]*tau4*delta4*((Numeric)1./((Numeric)1.+pow((Numeric)2.*PI*tau4*(f0+f_grid[s]),(Numeric)2.)) + | |||
| 17337 | (Numeric)1./((Numeric)1.+pow((Numeric)2.*PI*tau4*(f0-f_grid[s]),(Numeric)2.))) + | |||
| 17338 | PI*f_grid[s]*tau5*delta5*((Numeric)1./((Numeric)1.+pow((Numeric)2.*PI*tau5*(f1+f_grid[s]),(Numeric)2.)) + | |||
| 17339 | (Numeric)1./((Numeric)1.+pow((Numeric)2.*PI*tau5*(f1-f_grid[s]),(Numeric)2.))); | |||
| 17340 | ||||
| 17341 | // the imaginary part of the complex refractivity of suspended liquid water particle [ppm] | |||
| 17342 | // In MPM93 w is in g/m³ and m is in g/cm³. Because of the units used in arts, | |||
| 17343 | // a factor of 1.000e6 must be multiplied with the ratio (w/m): | |||
| 17344 | // MPM93: (w/m)_MPM93 in (g/m³)/(g/cm³) | |||
| 17345 | // arts: (w/m)_arts in (kg/m³)/(kg/m³) | |||
| 17346 | // =====> (w/m)_MPM93 = 1.0e6 * (w/m)_arts | |||
| 17347 | // the factor of 1.0e6 is included below in pxsec calculation. | |||
| 17348 | Numeric ImNw = 1.500 / m * | |||
| 17349 | ( 3.000 * Imepsilon | |||
| 17350 | / ( pow((Reepsilon+(Numeric)2.000),(Numeric)2.) | |||
| 17351 | + pow(Imepsilon,(Numeric)2.) ) ); | |||
| 17352 | // liquid water particle absorption cross section [1/m] | |||
| 17353 | // The vmr of H2O will be multiplied at the stage of absorption | |||
| 17354 | // calculation: abs = vmr * pxsec. | |||
| 17355 | // pxsec = abs/vmr [1/m] but MPM93 is in [dB/km] --> conversion necessary | |||
| 17356 | pxsec(s,i) += 1.000e6 * dB_km_to_1_m * 0.1820 * (f_grid[s]*Hz_to_GHz) * ImNw; | |||
| 17357 | } | |||
| 17358 | } | |||
| 17359 | } | |||
| 17360 | } | |||
| 17361 | ||||
| 17362 | ||||
| 17363 | ||||
| 17364 | // | |||
| 17365 | // ################################################################################# | |||
| 17366 | //! MPM93IceCrystalAbs | |||
| 17367 | /*! | |||
| 17368 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 17369 | ice clouds according to MPM93 [1/m] | |||
| 17370 | \param CCin scaling parameter of the calculated cross section [1] | |||
| 17371 | \param CAin scaling parameter of the permittivity function a | |||
| 17372 | (see page 3-6 in the reference) [1] | |||
| 17373 | \param CBin scaling parameter of the permittivity function b | |||
| 17374 | (see page 3-6 in the reference) [1] | |||
| 17375 | \param model allows user defined input parameter | |||
| 17376 | (CCin, CAin, CBin)<br> or choice of | |||
| 17377 | pre-defined parameters of specific models (see note below). | |||
| 17378 | \param f_grid predefined frequency grid [Hz] | |||
| 17379 | \param abs_p predefined pressure grid [Pa] | |||
| 17380 | \param abs_t predefined temperature grid [K] | |||
| 17381 | \param vmr suspended water droplet density profile [kg/m³] | |||
| 17382 | (valid range (Tab.1 of reference): 0-0.001) | |||
| 17383 | ||||
| 17384 | \note Except for model 'user' the input parameters CCin, CAin, and CBin | |||
| 17385 | are neglected (model dominates over parameters).<br> | |||
| 17386 | Allowed models: 'MPM93' and 'user'. | |||
| 17387 | See the user guide for detailed explanations. | |||
| 17388 | ||||
| 17389 | \remark Reference: H. J. Liebe and G. A. Hufford and M. G. Cotton,<br> | |||
| 17390 | <i>Propagation modeling of moist air and suspended water/ice | |||
| 17391 | particles at frequencies below 1000 GHz</i>,<br> | |||
| 17392 | AGARD 52nd Specialists Meeting of the Electromagnetic Wave | |||
| 17393 | Propagation Panel,<br> Palma de Mallorca, Spain, 1993, May 17-21. | |||
| 17394 | ||||
| 17395 | \author Thomas Kuhn | |||
| 17396 | \date 2001-11-05 | |||
| 17397 | */ | |||
| 17398 | ||||
| 17399 | void MPM93IceCrystalAbs (MatrixView pxsec, | |||
| 17400 | const Numeric CCin, // input parameter | |||
| 17401 | const Numeric CAin, // input parameter | |||
| 17402 | const Numeric CBin, // input parameter | |||
| 17403 | const String& model, // model | |||
| 17404 | ConstVectorView f_grid, // frequency vector | |||
| 17405 | ConstVectorView abs_p, // pressure vector | |||
| 17406 | ConstVectorView abs_t, // temperature vector | |||
| 17407 | ConstVectorView vmr, // suspended ice particle density vector, | |||
| 17408 | // valid range: 0-1.0e-3 kg/m³ | |||
| 17409 | const Verbosity& ) | |||
| 17410 | { | |||
| 17411 | // --------- STANDARD MODEL PARAMETERS ------------------------------------------------ | |||
| 17412 | // standard values for the MPM93 model (J. Liebe and G. A. Hufford and M. G. Cotton, | |||
| 17413 | // "Propagation modeling of moist air and suspended water/ice | |||
| 17414 | // particles at frequencies below 1000 GHz", | |||
| 17415 | // AGARD 52nd Specialists Meeting of the Electromagnetic Wave | |||
| 17416 | // Propagation Panel, Palma de Mallorca, Spain, 1993, May 17-21) | |||
| 17417 | const Numeric CC_MPM93 = 1.00000; | |||
| 17418 | const Numeric CA_MPM93 = 1.00000; | |||
| 17419 | const Numeric CB_MPM93 = 1.00000; | |||
| 17420 | // ------------------------------------------------------------------------------------ | |||
| 17421 | ||||
| 17422 | // select the parameter set (!!model dominates values!!): | |||
| 17423 | Numeric CC, CA, CB; | |||
| 17424 | if ( model == "MPM93" ) | |||
| 17425 | { | |||
| 17426 | CC = CC_MPM93; | |||
| 17427 | CA = CA_MPM93; | |||
| 17428 | CB = CB_MPM93; | |||
| 17429 | } | |||
| 17430 | else if ( model == "user" ) | |||
| 17431 | { | |||
| 17432 | CC = CCin; | |||
| 17433 | CA = CAin; | |||
| 17434 | CB = CBin; | |||
| 17435 | } | |||
| 17436 | else | |||
| 17437 | { | |||
| 17438 | ostringstream os; | |||
| 17439 | os << "icecloud-MPM93: ERROR! Wrong model values given.\n" | |||
| 17440 | << "Valid models are: \"MPM93\" and \"user\""; | |||
| 17441 | throw runtime_error(os.str()); | |||
| 17442 | } | |||
| 17443 | ||||
| 17444 | const Numeric m = 0.916e3; // specific weight of ice particles, fixed value: 0.916e3 kg/m³ | |||
| 17445 | const Numeric low_lim_den = -LIQUID_AND_ICE_TREAT_AS_ZERO; // lower limit of suspended droplet particle density vector [kg/m3] | |||
| 17446 | const Numeric high_lim_den = 1.00e-3; // lower limit of suspended ice particle density vector [kg/m³] | |||
| 17447 | ||||
| 17448 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 17449 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 17450 | ||||
| 17451 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 17452 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 17452 , "n_p==abs_t.nelem()") : (void)0); | |||
| 17453 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 17453 , "n_p==vmr.nelem()") : (void)0); | |||
| 17454 | ||||
| 17455 | // Check that dimensions of pxsec are consistent with n_f | |||
| 17456 | // and n_p. It should be [n_f,n_p]: | |||
| 17457 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 17457 , "n_f==pxsec.nrows()") : (void)0); | |||
| 17458 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 17458 , "n_p==pxsec.ncols()") : (void)0); | |||
| 17459 | ||||
| 17460 | ||||
| 17461 | // Loop pressure/temperature: | |||
| 17462 | for ( Index i=0; i<n_p; ++i ) | |||
| 17463 | { | |||
| 17464 | // Check limits of suspended water droplet density ("vmr") [kg/m³] | |||
| 17465 | if( (vmr[i] < low_lim_den) || (vmr[i] > high_lim_den) ) | |||
| 17466 | { | |||
| 17467 | ostringstream os; | |||
| 17468 | os << "ERROR in MPM93IceCrystalAbs:\n" | |||
| 17469 | << "Valid range is " << low_lim_den << "-" << low_lim_den << "kg/m3,\n" | |||
| 17470 | << "but found a value = " << vmr[i]; | |||
| 17471 | throw runtime_error(os.str()); | |||
| 17472 | } | |||
| 17473 | ||||
| 17474 | else if( vmr[i] < LIQUID_AND_ICE_TREAT_AS_ZERO ) | |||
| 17475 | { | |||
| 17476 | pxsec(joker,i) = 0; | |||
| 17477 | } | |||
| 17478 | ||||
| 17479 | else | |||
| 17480 | { | |||
| 17481 | // relative inverse temperature [1] | |||
| 17482 | Numeric theta = 300.000 / abs_t[i]; | |||
| 17483 | // inverse frequency T-dependency function [Hz] | |||
| 17484 | Numeric ai = CA * (62.000 * theta - 11.600) * exp(-22.100 * (theta-1.000)) * 1.000e-4; | |||
| 17485 | // linear frequency T-dependency function [1/Hz] | |||
| 17486 | Numeric bi = CB * 0.542e-6 * | |||
| 17487 | ( -24.17 + (116.79/theta) | |||
| 17488 | + pow((theta/(theta-(Numeric)0.9927)),(Numeric)2.) ); | |||
| 17489 | ||||
| 17490 | // Loop frequency: | |||
| 17491 | for ( Index s=0; s<n_f; ++s ) | |||
| 17492 | { | |||
| 17493 | // real part of the complex permittivity of ice | |||
| 17494 | Numeric Reepsilon = 3.15; | |||
| 17495 | // imaginary part of the complex permittivity of water | |||
| 17496 | Numeric Imepsilon = ( ( ai/(f_grid[s]*Hz_to_GHz) ) + | |||
| 17497 | ( bi*(f_grid[s]*Hz_to_GHz) ) ); | |||
| 17498 | // the imaginary part of the complex refractivity of suspended ice particles. | |||
| 17499 | // In MPM93 w is in g/m³ and m is in g/cm³. Because of the units used in arts, | |||
| 17500 | // a factor of 1.000e6 must be multiplied with the ratio (w/m): | |||
| 17501 | // MPM93: (w/m)_MPM93 in (g/m³)/(g/cm³) | |||
| 17502 | // arts: (w/m)_arts in (kg/m³)/(kg/m³) | |||
| 17503 | // =====> (w/m)_MPM93 = 1.0e6 * (w/m)_arts | |||
| 17504 | // the factor of 1.0e6 is included below in pxsec calculation. | |||
| 17505 | Numeric ImNw = 1.500 / m * | |||
| 17506 | ( 3.000 * Imepsilon | |||
| 17507 | / ( pow((Reepsilon+(Numeric)2.000),(Numeric)2.) | |||
| 17508 | + pow(Imepsilon,(Numeric)2.) ) ); | |||
| 17509 | // ice particle absorption cross section [1/m] | |||
| 17510 | // The vmr of H2O will be multiplied at the stage of absorption | |||
| 17511 | // calculation: abs = vmr * pxsec. | |||
| 17512 | // pxsec = abs/vmr [1/m] but MPM93 is in [dB/km] --> conversion necessary | |||
| 17513 | pxsec(s,i) += CC * 1.000e6 * dB_km_to_1_m * 0.1820 * (f_grid[s]*Hz_to_GHz) * ImNw; | |||
| 17514 | } | |||
| 17515 | } | |||
| 17516 | } | |||
| 17517 | } | |||
| 17518 | ||||
| 17519 | ||||
| 17520 | // | |||
| 17521 | // ################################################################################# | |||
| 17522 | //! MPM93RainExt | |||
| 17523 | /*! | |||
| 17524 | \param[out] pxsec cross section (absorption/volume mixing ratio) of | |||
| 17525 | water clouds according to MPM93 [1/m] | |||
| 17526 | \param CEin scaling parameter of the calculated cross section [1] | |||
| 17527 | \param CAin scaling parameter of the factor a_rain [1] | |||
| 17528 | \param CBin scaling parameter of the exponent b_rain [1] | |||
| 17529 | \param model allows user defined input parameter | |||
| 17530 | (CEin, CAin, CBin)<br> or choice of | |||
| 17531 | pre-defined parameters of specific models (see note below). | |||
| 17532 | \param f_grid predefined frequency grid [Hz] | |||
| 17533 | \param abs_p predefined pressure grid [Pa] | |||
| 17534 | \param abs_t predefined temperature grid [K] | |||
| 17535 | \param vmr rain rate vector (i.e. vertical profile) [kg/m2/s] | |||
| 17536 | (valid range: 0-0.42) | |||
| 17537 | ||||
| 17538 | \note Except for model 'user' the input parameters CEin, CAin, and CBin | |||
| 17539 | are neglected (model dominates over parameters).<br> | |||
| 17540 | Allowed models: 'MPM93' and 'user'. | |||
| 17541 | See the user guide for detailed explanations. | |||
| 17542 | ||||
| 17543 | \remark Reference: R. L. Olsen and D.V. Rogers and D. B. Hodge,<br> | |||
| 17544 | <i> The aR^b relation in the calculation of rain attenuation</i>,<br> | |||
| 17545 | IEEE Trans. Antennas Propagat., vol. AP-26, pp. 318-329, 1978. | |||
| 17546 | ||||
| 17547 | \author Christian Melsheimer | |||
| 17548 | \date 2003-22-05 | |||
| 17549 | */ | |||
| 17550 | ||||
| 17551 | void MPM93RainExt (MatrixView pxsec, | |||
| 17552 | const Numeric CEin, // input parameter | |||
| 17553 | const Numeric CAin, // input parameter | |||
| 17554 | const Numeric CBin, // input parameter | |||
| 17555 | const String& model, // model | |||
| 17556 | ConstVectorView f_grid, // frequency vector | |||
| 17557 | ConstVectorView abs_p, // pressure vector | |||
| 17558 | ConstVectorView abs_t _U___attribute((unused)), // temperature vector | |||
| 17559 | ConstVectorView vmr, // rain rate profile [kg/m2/s] | |||
| 17560 | const Verbosity& ) | |||
| 17561 | { | |||
| 17562 | // --------- STANDARD MODEL PARAMETERS ------------------------------------------------ | |||
| 17563 | // standard values for the MPM93 model based on Olsen, R.L., | |||
| 17564 | // D.V. Rogers, and D. B. Hodge, "The aR^b relation in the | |||
| 17565 | // calculation of rain attenuation", IEEE Trans. Antennas Propagat., | |||
| 17566 | // vol. AP-26, pp. 318-329, 1978, | |||
| 17567 | const Numeric CE_MPM93 = 1.00000; | |||
| 17568 | const Numeric CA_MPM93 = 1.00000; | |||
| 17569 | const Numeric CB_MPM93 = 1.00000; | |||
| 17570 | // ------------------------------------------------------------------------------------ | |||
| 17571 | ||||
| 17572 | ||||
| 17573 | // select the parameter set (!!model dominates values!!): | |||
| 17574 | Numeric CE, CA, CB; | |||
| 17575 | if ( model == "MPM93" ) | |||
| 17576 | { | |||
| 17577 | CE = CE_MPM93; | |||
| 17578 | CA = CA_MPM93; | |||
| 17579 | CB = CB_MPM93; | |||
| 17580 | } | |||
| 17581 | else if ( model == "user" ) | |||
| 17582 | { | |||
| 17583 | CE = CEin; | |||
| 17584 | CA = CAin; | |||
| 17585 | CB = CBin; | |||
| 17586 | } | |||
| 17587 | else | |||
| 17588 | { | |||
| 17589 | ostringstream os; | |||
| 17590 | os << "rain-MPM93: ERROR! Wrong model values given.\n" | |||
| 17591 | << "Valid models are: \"MPM93\" and \"user\""; | |||
| 17592 | throw runtime_error(os.str()); | |||
| 17593 | } | |||
| 17594 | // --------------------------------------------------------------------------------------- | |||
| 17595 | ||||
| 17596 | // conversion factor to convert input SI-units [kg/m2/s] to [mm/h] | |||
| 17597 | const Numeric convfac=3.6e6/DENSITY_OF_WATER; | |||
| 17598 | ||||
| 17599 | const Numeric low_lim_rr = 0.000; // lower limit of allowed rain rate [mm/h] | |||
| 17600 | const Numeric high_lim_rr = 150.000; // upper limit of allowed rain rate [mm/h] | |||
| 17601 | ||||
| 17602 | const Index n_p = abs_p.nelem(); // Number of pressure levels | |||
| 17603 | const Index n_f = f_grid.nelem(); // Number of frequencies | |||
| 17604 | ||||
| 17605 | // Check that dimensions of abs_p, abs_t, and vmr agree: | |||
| 17606 | assert ( n_p==abs_t.nelem() )(__builtin_expect(!(n_p==abs_t.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 17606 , "n_p==abs_t.nelem()") : (void)0); | |||
| 17607 | assert ( n_p==vmr.nelem() )(__builtin_expect(!(n_p==vmr.nelem()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 17607 , "n_p==vmr.nelem()") : (void)0); | |||
| 17608 | ||||
| 17609 | // Check that dimensions of pxsec are consistent with n_f | |||
| 17610 | // and n_p. It should be [n_f,n_p]: | |||
| 17611 | assert ( n_f==pxsec.nrows() )(__builtin_expect(!(n_f==pxsec.nrows()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 17611 , "n_f==pxsec.nrows()") : (void)0); | |||
| 17612 | assert ( n_p==pxsec.ncols() )(__builtin_expect(!(n_p==pxsec.ncols()), 0) ? __assert_rtn(__func__ , "/Users/u237002/Dropbox/Hacking/sat/arts/src/continua.cc", 17612 , "n_p==pxsec.ncols()") : (void)0); | |||
| 17613 | ||||
| 17614 | // Loop pressure/temperature: | |||
| 17615 | for ( Index i=0; i<n_p; ++i ) | |||
| 17616 | { | |||
| 17617 | // Extinction by rain is parameterized as: | |||
| 17618 | // ext_rain = a_rain * rr ^ b_rain | |||
| 17619 | // a_rain and b_rain each depend on frequency by power laws: | |||
| 17620 | // a_rain = Ga * freq ^ Ea | |||
| 17621 | // b_rain = Gb * freq ^ Eb | |||
| 17622 | Numeric Ga = 0.; | |||
| 17623 | Numeric Ea = 0.; | |||
| 17624 | Numeric Gb = 0.; | |||
| 17625 | Numeric Eb = 0.; | |||
| 17626 | // FIXME Numeric a_rain; | |||
| 17627 | // FIXME Numeric b_rain; | |||
| 17628 | // FIXME Numeric ext_rain; | |||
| 17629 | ||||
| 17630 | const Numeric vmri = vmr[i] * convfac; | |||
| 17631 | ||||
| 17632 | // Check limits of rain rate ("vmr") [mm/h] | |||
| 17633 | if ( vmr[i]==0. ) | |||
| 17634 | pxsec(joker,i) += 0.; | |||
| 17635 | ||||
| 17636 | else if ( (vmri >= low_lim_rr) && (vmri < high_lim_rr) ) | |||
| 17637 | { | |||
| 17638 | // Loop frequency: | |||
| 17639 | for ( Index s=0; s<n_f; ++s ) | |||
| 17640 | { | |||
| 17641 | // for rain rate < 25 mm/h, take parameters from Olsen et al.'s | |||
| 17642 | // own power law fit to their Laws-Parsons-Low data; | |||
| 17643 | // for rain rate > 25 mm/h, take C. Melsheimer's power law fit | |||
| 17644 | // to Olsen et al.'s Laws-Parson-High data | |||
| 17645 | if ( vmri <= 25 ) | |||
| 17646 | { | |||
| 17647 | // power law coeff. Ga and exponent Ea for a, piecewise: | |||
| 17648 | if ( f_grid[s] <= 2.9e9 ) | |||
| 17649 | { | |||
| 17650 | Ga = 6.39e-5; | |||
| 17651 | Ea = 2.03; | |||
| 17652 | } | |||
| 17653 | else if ( f_grid[s] <= 54.0e9 ) | |||
| 17654 | { | |||
| 17655 | Ga = 4.21e-5; | |||
| 17656 | Ea = 2.42; | |||
| 17657 | } | |||
| 17658 | else if ( f_grid[s] <= 180e9 ) | |||
| 17659 | { | |||
| 17660 | Ga = 4.09e-2; | |||
| 17661 | Ea = 0.699; | |||
| 17662 | } | |||
| 17663 | else if ( f_grid[s] <= 1000e9 ) | |||
| 17664 | { | |||
| 17665 | Ga = 3.38; | |||
| 17666 | Ea = -0.151; | |||
| 17667 | } | |||
| 17668 | else | |||
| 17669 | { | |||
| 17670 | ostringstream os; | |||
| 17671 | os << "ERROR in MPM93RainExt:\n" | |||
| 17672 | << " frequency (valid range 0-1000 GHz):" | |||
| 17673 | << f_grid[s]*Hz_to_GHz << "\n" | |||
| 17674 | << " ==> no calculation performed!\n"; | |||
| 17675 | throw runtime_error(os.str()); | |||
| 17676 | } | |||
| 17677 | // power law coeff. Gb and exponent Eb for b, piecewise: | |||
| 17678 | if ( f_grid[s] <= 8.5e9 ) | |||
| 17679 | { | |||
| 17680 | Gb = 0.851; | |||
| 17681 | Eb = 0.158; | |||
| 17682 | } | |||
| 17683 | else if ( f_grid[s] <= 25.0e9 ) | |||
| 17684 | { | |||
| 17685 | Gb = 1.41; | |||
| 17686 | Eb = -0.0779; | |||
| 17687 | } | |||
| 17688 | else if ( f_grid[s] <= 164.0e9 ) | |||
| 17689 | { | |||
| 17690 | Gb = 2.63; | |||
| 17691 | Eb = -0.272; | |||
| 17692 | } | |||
| 17693 | else if ( f_grid[s] <= 1000e9 ) | |||
| 17694 | { | |||
| 17695 | Gb = 0.616; | |||
| 17696 | Eb = 0.0126; | |||
| 17697 | } | |||
| 17698 | else | |||
| 17699 | { | |||
| 17700 | ostringstream os; | |||
| 17701 | os << "ERROR in MPM93RainExt:\n" | |||
| 17702 | << " frequency (valid range 0-1000 GHz):" | |||
| 17703 | << f_grid[s]*Hz_to_GHz << "\n" | |||
| 17704 | << " ==> no calculation performed!\n"; | |||
| 17705 | throw runtime_error(os.str()); | |||
| 17706 | } | |||
| 17707 | ||||
| 17708 | } | |||
| 17709 | else if (vmri > 25) | |||
| 17710 | { | |||
| 17711 | // power law coeff. Ga and exponent Ea for a, piecewise: | |||
| 17712 | if ( f_grid[s] <= 4.9e9 ) | |||
| 17713 | { | |||
| 17714 | Ga = 5.30e-5; | |||
| 17715 | Ea = 1.87; | |||
| 17716 | } | |||
| 17717 | else if ( f_grid[s] <= 10.7e9 ) | |||
| 17718 | { | |||
| 17719 | Ga = 5.03e-6; | |||
| 17720 | Ea = 3.35; | |||
| 17721 | } | |||
| 17722 | else if ( f_grid[s] <= 40.1e9 ) | |||
| 17723 | { | |||
| 17724 | Ga = 2.53e-5; | |||
| 17725 | Ea = 2.67; | |||
| 17726 | } | |||
| 17727 | else if ( f_grid[s] <= 59.1e9 ) | |||
| 17728 | { | |||
| 17729 | Ga = 3.58e-3; | |||
| 17730 | Ea = 1.33; | |||
| 17731 | } | |||
| 17732 | else if ( f_grid[s] <= 100e9 ) | |||
| 17733 | { | |||
| 17734 | Ga = 0.143; | |||
| 17735 | Ea = 0.422; | |||
| 17736 | } | |||
| 17737 | else | |||
| 17738 | { | |||
| 17739 | ostringstream os; | |||
| 17740 | os << "ERROR in MPM93RainExt:\n" | |||
| 17741 | << " frequency (valid range for rain rate > 25mm/h: 0-100 GHz):" | |||
| 17742 | << f_grid[s]*Hz_to_GHz << "\n" | |||
| 17743 | << " ==> no calculation performed!\n"; | |||
| 17744 | throw runtime_error(os.str()); | |||
| 17745 | } | |||
| 17746 | // power law coeff. Gb and exponent Eb for b, piecewise: | |||
| 17747 | if ( f_grid[s] <= 6.2e9 ) | |||
| 17748 | { | |||
| 17749 | Gb = 0.911; | |||
| 17750 | Eb = 0.190; | |||
| 17751 | } | |||
| 17752 | else if ( f_grid[s] <= 23.8e9 ) | |||
| 17753 | { | |||
| 17754 | Gb = 1.71; | |||
| 17755 | Eb = -0.156; | |||
| 17756 | } | |||
| 17757 | else if ( f_grid[s] <= 48.4e9 ) | |||
| 17758 | { | |||
| 17759 | Gb = 3.08; | |||
| 17760 | Eb = -0.342; | |||
| 17761 | } | |||
| 17762 | else if ( f_grid[s] <= 68.2e9 ) | |||
| 17763 | { | |||
| 17764 | Gb = 1.28; | |||
| 17765 | Eb = -0.116; | |||
| 17766 | } | |||
| 17767 | else if ( f_grid[s] <= 100e9 ) | |||
| 17768 | { | |||
| 17769 | Gb = 0.932; | |||
| 17770 | Eb = -0.0408; | |||
| 17771 | } | |||
| 17772 | else | |||
| 17773 | { | |||
| 17774 | ostringstream os; | |||
| 17775 | os << "ERROR in MPM93RainExt:\n" | |||
| 17776 | << " frequency (valid range for rain rate > 25mm/h: 0-100 GHz):" | |||
| 17777 | << f_grid[s]*Hz_to_GHz << "\n" | |||
| 17778 | << " ==> no calculation performed!\n"; | |||
| 17779 | throw runtime_error(os.str()); | |||
| 17780 | } | |||
| 17781 | } | |||
| 17782 | //Factor a_rain | |||
| 17783 | Numeric a_rain = Ga * pow((f_grid[s]*Hz_to_GHz),Ea); | |||
| 17784 | //Factor b_rain | |||
| 17785 | Numeric b_rain = Gb * pow((f_grid[s]*Hz_to_GHz),Eb); | |||
| 17786 | // Extinction coefficient [dB/km], with scaling | |||
| 17787 | // parameters CA and CB | |||
| 17788 | Numeric ext_rain = CA * a_rain * pow(vmri,(CB*b_rain)); | |||
| 17789 | // rain extinction cross section [1/m] | |||
| 17790 | // The vmr will be multiplied at the stage of extinction | |||
| 17791 | // calculation: ext = vmr * pxsec. | |||
| 17792 | // pxsec = ext/vmr [1/m] but MPM93 is in [dB/km] --> conversion necessary | |||
| 17793 | pxsec(s,i) += CE * dB_km_to_1_m * ext_rain / vmri; | |||
| 17794 | } | |||
| 17795 | } else | |||
| 17796 | { | |||
| 17797 | if ( (vmri < low_lim_rr) || (vmri > high_lim_rr) ) | |||
| 17798 | { | |||
| 17799 | ostringstream os; | |||
| 17800 | os << "ERROR in MPM93RainExt:\n" | |||
| 17801 | << " rain rate (valid range 0.00-150.00 mm/h):" << vmr[i] << " kg/m2/s (" | |||
| 17802 | << vmri << " mm/h)\n" | |||
| 17803 | << " ==> no calculation performed!\n"; | |||
| 17804 | throw runtime_error(os.str()); | |||
| 17805 | } | |||
| 17806 | } | |||
| 17807 | } | |||
| 17808 | ||||
| 17809 | } | |||
| 17810 | // | |||
| 17811 | // ################################################################################# | |||
| 17812 | // ################################# HELP FUNCTIONS ################################ | |||
| 17813 | // ################################################################################# | |||
| 17814 | // | |||
| 17815 | /** | |||
| 17816 | ||||
| 17817 | \retval MPMLineShapeFunction H2O-line shape function value [1/Hz] | |||
| 17818 | \param gamma H2O-line width [Hz] | |||
| 17819 | \param fl H2O-line central frequency [Hz] | |||
| 17820 | \param f frequency position of calculation [Hz] | |||
| 17821 | ||||
| 17822 | \note This function calculates the line shape function of Van Vleck and Weisskopf | |||
| 17823 | with the factor (f/fl)¹. for the MPM pseudo continuum line. | |||
| 17824 | ||||
| 17825 | \remark Reference: H. J. Liebe and G. A. Hufford and M. G. Cotton,<br> | |||
| 17826 | <i>Propagation modeling of moist air and suspended water/ice | |||
| 17827 | particles at frequencies below 1000 GHz</i>,<br> | |||
| 17828 | AGARD 52nd Specialists Meeting of the Electromagnetic Wave | |||
| 17829 | Propagation Panel,<br> Palma de Mallorca, Spain, 1993, May 17-21 | |||
| 17830 | ||||
| 17831 | \author Thomas Kuhn | |||
| 17832 | \date 2001-11-05 | |||
| 17833 | */ | |||
| 17834 | ||||
| 17835 | Numeric MPMLineShapeFunction( const Numeric gamma, | |||
| 17836 | const Numeric fl, | |||
| 17837 | const Numeric f) | |||
| 17838 | { | |||
| 17839 | /* | |||
| 17840 | this routine calculates the line shape function of Van Vleck and Weisskopf | |||
| 17841 | with the factor (f/f_o)¹. for the MPM pseudo continuum line. | |||
| 17842 | ||||
| 17843 | creation TKS, 4.11.00 | |||
| 17844 | ||||
| 17845 | input: gamma [Hz] line width of line L | |||
| 17846 | fl [Hz] central frequency of line L | |||
| 17847 | f [Hz] frequency position of calculation | |||
| 17848 | ||||
| 17849 | output: value [1/Hz] line shape function value at f for the line parameters | |||
| 17850 | of line L | |||
| 17851 | ||||
| 17852 | */ | |||
| 17853 | ||||
| 17854 | double f_minus, f_plus ; /* internal variables */ | |||
| 17855 | double value; /* return value */ | |||
| 17856 | ||||
| 17857 | // line at fl | |||
| 17858 | f_minus = 1.000 / ((f-fl)*(f-fl) + gamma*gamma); | |||
| 17859 | ||||
| 17860 | // mirror line at -fl | |||
| 17861 | f_plus = 1.000 / ((f+fl)*(f+fl) + gamma*gamma); | |||
| 17862 | ||||
| 17863 | // VVW line shape function value | |||
| 17864 | value = fabs(f/fl) * gamma * (f_minus + f_plus); | |||
| 17865 | ||||
| 17866 | return value; | |||
| 17867 | } | |||
| 17868 | // | |||
| 17869 | // ################################################################################# | |||
| 17870 | // | |||
| 17871 | /** | |||
| 17872 | ||||
| 17873 | \retval MPMLineShapeO2Function O2-line shape function value [1] | |||
| 17874 | \param gamma O2-line width [Hz] | |||
| 17875 | \param fl H2O-line central frequency of the [Hz] | |||
| 17876 | \param f frequency position of calculation [Hz] | |||
| 17877 | \param delta O2-line mixing parameter [1] | |||
| 17878 | ||||
| 17879 | \note This function calculates the line shape function of Van Vleck and Weisskopf | |||
| 17880 | for O2 with line mixing. | |||
| 17881 | ||||
| 17882 | \remark Reference: H. J. Liebe and G. A. Hufford and M. G. Cotton,<br> | |||
| 17883 | <i>Propagation modeling of moist air and suspended water/ice | |||
| 17884 | particles at frequencies below 1000 GHz</i>,<br> | |||
| 17885 | AGARD 52nd Specialists Meeting of the Electromagnetic Wave | |||
| 17886 | Propagation Panel,<br> Palma de Mallorca, Spain, 1993, May 17-21 | |||
| 17887 | ||||
| 17888 | \author Thomas Kuhn | |||
| 17889 | \date 2001-11-05 | |||
| 17890 | */ | |||
| 17891 | ||||
| 17892 | Numeric MPMLineShapeO2Function( const Numeric gamma, | |||
| 17893 | const Numeric fl, | |||
| 17894 | const Numeric f, | |||
| 17895 | const Numeric delta) | |||
| 17896 | { | |||
| 17897 | /* | |||
| 17898 | this routine calculates the line shape function of Van Vleck and Weisskopf | |||
| 17899 | for O2 with line mixing. | |||
| 17900 | ||||
| 17901 | creation TKS, 14.07.01 | |||
| 17902 | ||||
| 17903 | input: gamma [GHz] line width of line L | |||
| 17904 | fl [GHz] central frequency of line L | |||
| 17905 | f [GHz] frequency position of calculation | |||
| 17906 | delta [1] line mixing parameter | |||
| 17907 | ||||
| 17908 | output: value [1] line shape function value at f for the line parameters | |||
| 17909 | of line L | |||
| 17910 | ||||
| 17911 | */ | |||
| 17912 | ||||
| 17913 | double f_minus, f_plus ; /* internal variables */ | |||
| 17914 | double value; /* return value */ | |||
| 17915 | ||||
| 17916 | // line at fl | |||
| 17917 | f_minus = (gamma - delta * (fl-f)) / ((fl-f)*(fl-f) + gamma*gamma); | |||
| 17918 | ||||
| 17919 | // mirror line at -fl | |||
| 17920 | f_plus = (gamma - delta * (fl+f)) / ((fl+f)*(fl+f) + gamma*gamma); | |||
| 17921 | ||||
| 17922 | // VVW line shape function value | |||
| 17923 | value = f * (f_minus + f_plus); | |||
| 17924 | ||||
| 17925 | return value; | |||
| 17926 | } | |||
| 17927 | ||||
| 17928 | ||||
| 17929 | ||||
| 17930 | // | |||
| 17931 | // ############################################################################ | |||
| 17932 | // #################### CONTROL OF ADDITIONAL ABSORPTION MODEL ################ | |||
| 17933 | // ############################################################################ | |||
| 17934 | // | |||
| 17935 | // | |||
| 17936 | /** | |||
| 17937 | Calculates model absorption for one continuum or full model tag. | |||
| 17938 | Note, that only one tag can be taken at a time. | |||
| 17939 | ||||
| 17940 | Calculated is the true absorption cross section, that means you have to | |||
| 17941 | multiply this with n*VMR in order to get the absorption | |||
| 17942 | coefficient in units of 1/m. | |||
| 17943 | ||||
| 17944 | This is the type of xsec that is used all over ARTS, but not what | |||
| 17945 | is used by the internal continuum functions! (We have to divide | |||
| 17946 | the output of the internal continuum functions by the number | |||
| 17947 | density n.) | |||
| 17948 | ||||
| 17949 | \retval xsec Cross section of one continuum tag,<br> | |||
| 17950 | xsec = alpha / (n*VMR) [m^2]. This is both input | |||
| 17951 | and output! (The function adds the continuum | |||
| 17952 | absorption cross section to the previous | |||
| 17953 | content of xsec.) | |||
| 17954 | ||||
| 17955 | \param name The name of the model to calculate (derived from the tag name) | |||
| 17956 | \param parameters model parameters, as defined in method | |||
| 17957 | abs_cont_parameters. | |||
| 17958 | \param model model, related to model parameters | |||
| 17959 | \param f_grid Frequency grid [Hz] | |||
| 17960 | \param abs_p Pressure grid [Pa] | |||
| 17961 | \param abs_t Temperatures associated with the pressure grid, abs_p [K] | |||
| 17962 | \param abs_n2 Total volume mixing ratio profile of molecular nitrogen.<br> | |||
| 17963 | This will be needed only for the CO2 foreign continuum [1]<br> | |||
| 17964 | however one is forced to give this input [1] | |||
| 17965 | \param abs_h2o Total volume mixing ratio profile of water vapor.<br> | |||
| 17966 | This will be needed only for the oxygen continuum <br> | |||
| 17967 | however one is forced to give this input [1] | |||
| 17968 | \param vmr Volume mixing ratio profile of the actual species [1] | |||
| 17969 | ||||
| 17970 | \author Stefan Buehler, Thomas Kuhn | |||
| 17971 | \date 2001-11-05 | |||
| 17972 | */ | |||
| 17973 | void xsec_continuum_tag (MatrixView xsec, | |||
| 17974 | const String& name, | |||
| 17975 | ConstVectorView parameters, | |||
| 17976 | const String& model, | |||
| 17977 | ConstVectorView f_grid, | |||
| 17978 | ConstVectorView abs_p, | |||
| 17979 | ConstVectorView abs_t, | |||
| 17980 | ConstVectorView abs_n2, | |||
| 17981 | ConstVectorView abs_h2o, | |||
| 17982 | ConstVectorView abs_o2, | |||
| 17983 | ConstVectorView vmr, | |||
| 17984 | const Verbosity& verbosity) | |||
| 17985 | { | |||
| 17986 | CREATE_OUT3ArtsOut3 out3(verbosity); | |||
| 17987 | ||||
| 17988 | /* In the following all the possible tags are listed here and | |||
| 17989 | after a first consistency check about the input parameters the | |||
| 17990 | appropriate internal function is called, | |||
| 17991 | ||||
| 17992 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | |||
| 17993 | ATTENTION PLEASE UPDATE THIS COMMENT IF ANY CHANGES ARE MADE CONCERNING | |||
| 17994 | THE ASSOCIATED MODELS TO EACH TAG | |||
| 17995 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | |||
| 17996 | ||||
| 17997 | ---------------------------------------------------------------------------------------------------- | |||
| 17998 | TAG VALID MODELS | |||
| 17999 | ---------------------------------------------------------------------------------------------------- | |||
| 18000 | *CONTAGMODINFO* H2O-SelfContStandardType: Rosenkranz, user | |||
| 18001 | *CONTAGMODINFO* H2O-ForeignContStandardType: Rosenkranz, user | |||
| 18002 | *CONTAGMODINFO* H2O-ForeignContMaTippingType: MaTipping, user | |||
| 18003 | *CONTAGMODINFO* H2O-ContMPM93: MPM93, user | |||
| 18004 | *CONTAGMODINFO* H2O-MPM87: MPM87, MPM87Lines, MPM87Continuum, user | |||
| 18005 | *CONTAGMODINFO* H2O-MPM89: MPM89, MPM89Lines, MPM89Continuum, user | |||
| 18006 | *CONTAGMODINFO* H2O-MPM93: MPM93, MPM93Lines, MPM93Continuum, user | |||
| 18007 | *CONTAGMODINFO* H2O-PWR98: Rosenkranz, RosenkranzLines, RosenkranzContinuum, user | |||
| 18008 | *CONTAGMODINFO* H2O-CP98: CruzPol, CruzPolLine, CruzPolContinuum, user | |||
| 18009 | *CONTAGMODINFO* H2O-CKD24: CKD24, user | |||
| 18010 | *CONTAGMODINFO* O2-MPM85: MPM85, MPM85Lines, MPM85Continuum, MPM85NoCoupling, MPM85NoCutoff, user | |||
| 18011 | *CONTAGMODINFO* O2-MPM87: MPM87, MPM87Lines, MPM87Continuum, MPM87NoCoupling, MPM87NoCutoff, user | |||
| 18012 | *CONTAGMODINFO* O2-MPM89: MPM89, MPM89Lines, MPM89Continuum, MPM89NoCoupling, MPM89NoCutoff, user | |||
| 18013 | *CONTAGMODINFO* O2-MPM92: MPM92, MPM92Lines, MPM92Continuum, MPM92NoCoupling, MPM92NoCutoff, user | |||
| 18014 | *CONTAGMODINFO* O2-MPM93: MPM93, MPM93Lines, MPM93Continuum, MPM93NoCoupling, MPM92NoCutoff, user | |||
| 18015 | *CONTAGMODINFO* O2-PWR93: Rosenkranz, RosenkranzLines, RosenkranzContinuum, user | |||
| 18016 | *CONTAGMODINFO* O2-PWR88: Rosenkranz, RosenkranzLines, RosenkranzContinuum, user | |||
| 18017 | *CONTAGMODINFO* O2-SelfContMPM93: MPM93, user | |||
| 18018 | *CONTAGMODINFO* O2-SelfContPWR93: Rosenkranz, user | |||
| 18019 | *CONTAGMODINFO* O2-GenerealCont: Rosenkranz, MPM93, user | |||
| 18020 | *CONTAGMODINFO* N2-BFCIA86: BF86, user | |||
| 18021 | *CONTAGMODINFO* N2-SelfContMPM93: MPM93, user, MPM93Scale | |||
| 18022 | *CONTAGMODINFO* N2-SelfContPWR93: Rosenkranz, user | |||
| 18023 | *CONTAGMODINFO* N2-SelfContStandardType: Rosenkranz, user | |||
| 18024 | *CONTAGMODINFO* CO2-SelfContPWR93: Rosenkranz, user | |||
| 18025 | *CONTAGMODINFO* CO2-ForeignContPWR93: Rosenkranz, user | |||
| 18026 | *CONTAGMODINFO* liquidcloud-MPM93: MPM93, user | |||
| 18027 | *CONTAGMODINFO* liquidcloud-ELL07: ELL07 | |||
| 18028 | *CONTAGMODINFO* icecloud-MPM93: MPM93, user | |||
| 18029 | *CONTAGMODINFO* rain-MPM93: MPM93, user | |||
| 18030 | ---------------------------------------------------------------------------------------------------- | |||
| 18031 | */ | |||
| 18032 | ||||
| 18033 | // Set up a lokal variable pxsec for the pseudo cross sections, that | |||
| 18034 | // are used by the internal contiuum functions. It is important that | |||
| 18035 | // we also inititialize this to zero here, since the continuum | |||
| 18036 | // routines just add to this. | |||
| 18037 | // The dimensions of this are [n_frequencies,n_pressures]. | |||
| 18038 | Matrix pxsec(xsec.nrows(),xsec.ncols(),0.0); | |||
| 18039 | ||||
| 18040 | // ============= H2O continuum ======================================================== | |||
| 18041 | if ( "H2O-SelfContStandardType"==name ) | |||
| 18042 | { | |||
| 18043 | // | |||
| 18044 | // specific continuum parameters and units: | |||
| 18045 | // OUTPUT | |||
| 18046 | // pxsec : [1/m], | |||
| 18047 | // INPUT | |||
| 18048 | // parameters[0] : continuum coefficient (C_s) [1/m / (Hz²*Pa²)] | |||
| 18049 | // parameters[1] : temperature exponent (x_s) [1] | |||
| 18050 | // f_grid : [Hz] | |||
| 18051 | // abs_p : [Pa] | |||
| 18052 | // abs_t : [K] | |||
| 18053 | // vmr : [1] | |||
| 18054 | // | |||
| 18055 | const int Nparam = 2; | |||
| 18056 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 18057 | { | |||
| 18058 | out3 << "Continuum model " << name << " is running with \n" | |||
| 18059 | << "user defined parameters according to model " << model << ".\n"; | |||
| 18060 | Standard_H2O_self_continuum( pxsec, | |||
| 18061 | parameters[0], | |||
| 18062 | parameters[1], | |||
| 18063 | model, | |||
| 18064 | f_grid, | |||
| 18065 | abs_p, | |||
| 18066 | abs_t, | |||
| 18067 | vmr, | |||
| 18068 | verbosity ); | |||
| 18069 | } | |||
| 18070 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 18071 | { | |||
| 18072 | ostringstream os; | |||
| 18073 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 18074 | << "parameters for the model " << model << ",\n" | |||
| 18075 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 18076 | throw runtime_error(os.str()); | |||
| 18077 | } | |||
| 18078 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 18079 | { | |||
| 18080 | out3 << "Continuum model " << name << " running with \n" | |||
| 18081 | << "the parameters for model " << model << ".\n"; | |||
| 18082 | Standard_H2O_self_continuum( pxsec, | |||
| 18083 | 0.00, | |||
| 18084 | 0.00, | |||
| 18085 | model, | |||
| 18086 | f_grid, | |||
| 18087 | abs_p, | |||
| 18088 | abs_t, | |||
| 18089 | vmr, | |||
| 18090 | verbosity ); | |||
| 18091 | } | |||
| 18092 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 18093 | { | |||
| 18094 | ostringstream os; | |||
| 18095 | os << "ERROR: Continuum model " << name << " requires NO input\n" | |||
| 18096 | << "parameters for the model " << model << ",\n" | |||
| 18097 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 18098 | << "This ambiguity can not be solved by arts.\n" | |||
| 18099 | << "Please see the arts user guide chapter 3.\n"; | |||
| 18100 | throw runtime_error(os.str()); | |||
| 18101 | } | |||
| 18102 | } | |||
| 18103 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 18104 | else if ( "H2O-ForeignContStandardType"==name ) | |||
| 18105 | { | |||
| 18106 | // | |||
| 18107 | // specific continuum parameters units: | |||
| 18108 | // a) output | |||
| 18109 | // pxsec : [1/m], | |||
| 18110 | // b) input | |||
| 18111 | // parameters[0] : [1/m / (Hz²*Pa²)] | |||
| 18112 | // parameters[1] : [1] | |||
| 18113 | // f_grid : [Hz] | |||
| 18114 | // abs_p : [Pa] | |||
| 18115 | // abs_t : [K] | |||
| 18116 | // vmr : [1] | |||
| 18117 | // | |||
| 18118 | const int Nparam = 2; | |||
| 18119 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 18120 | { | |||
| 18121 | out3 << "Continuum model " << name << " is running with \n" | |||
| 18122 | << "user defined parameters according to model " << model << ".\n"; | |||
| 18123 | Standard_H2O_foreign_continuum( pxsec, | |||
| 18124 | parameters[0], | |||
| 18125 | parameters[1], | |||
| 18126 | model, | |||
| 18127 | f_grid, | |||
| 18128 | abs_p, | |||
| 18129 | abs_t, | |||
| 18130 | vmr, | |||
| 18131 | verbosity ); | |||
| 18132 | } | |||
| 18133 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 18134 | { | |||
| 18135 | ostringstream os; | |||
| 18136 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 18137 | << "parameters for the model " << model << ",\n" | |||
| 18138 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 18139 | throw runtime_error(os.str()); | |||
| 18140 | } | |||
| 18141 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 18142 | { | |||
| 18143 | out3 << "Continuum model " << name << " running with \n" | |||
| 18144 | << "the parameters for model " << model << ".\n"; | |||
| 18145 | Standard_H2O_foreign_continuum( pxsec, | |||
| 18146 | 0.00, | |||
| 18147 | 0.00, | |||
| 18148 | model, | |||
| 18149 | f_grid, | |||
| 18150 | abs_p, | |||
| 18151 | abs_t, | |||
| 18152 | vmr, | |||
| 18153 | verbosity ); | |||
| 18154 | } | |||
| 18155 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 18156 | { | |||
| 18157 | ostringstream os; | |||
| 18158 | os << "ERROR: Continuum model " << name << " requires NO input\n" | |||
| 18159 | << "parameters for the model " << model << ",\n" | |||
| 18160 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 18161 | << "This ambiguity can not be solved by arts.\n" | |||
| 18162 | << "Please see the arts user guide chapter 3.\n"; | |||
| 18163 | throw runtime_error(os.str()); | |||
| 18164 | } | |||
| 18165 | } | |||
| 18166 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 18167 | else if ( "H2O-ForeignContMaTippingType"==name ) | |||
| 18168 | { | |||
| 18169 | // | |||
| 18170 | // specific continuum parameters units: | |||
| 18171 | // a) output | |||
| 18172 | // pxsec : [1/m], | |||
| 18173 | // b) input | |||
| 18174 | // parameters[0] : [1/m / (Hz²*Pa²)] | |||
| 18175 | // parameters[1] : [1] | |||
| 18176 | // f_grid : [Hz] | |||
| 18177 | // abs_p : [Pa] | |||
| 18178 | // abs_t : [K] | |||
| 18179 | // vmr : [1] | |||
| 18180 | // | |||
| 18181 | const int Nparam = 2; | |||
| 18182 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 18183 | { | |||
| 18184 | out3 << "Continuum model " << name << " is running with \n" | |||
| 18185 | << "user defined parameters according to model " << model << ".\n"; | |||
| 18186 | MaTipping_H2O_foreign_continuum( pxsec, | |||
| 18187 | parameters[0], | |||
| 18188 | parameters[1], | |||
| 18189 | model, | |||
| 18190 | f_grid, | |||
| 18191 | abs_p, | |||
| 18192 | abs_t, | |||
| 18193 | vmr, | |||
| 18194 | verbosity ); | |||
| 18195 | } | |||
| 18196 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 18197 | { | |||
| 18198 | ostringstream os; | |||
| 18199 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 18200 | << "parameters for the model " << model << ",\n" | |||
| 18201 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 18202 | throw runtime_error(os.str()); | |||
| 18203 | } | |||
| 18204 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 18205 | { | |||
| 18206 | out3 << "Continuum model " << name << " running with \n" | |||
| 18207 | << "the parameters for model " << model << ".\n"; | |||
| 18208 | MaTipping_H2O_foreign_continuum( pxsec, | |||
| 18209 | 0.00, | |||
| 18210 | 0.00, | |||
| 18211 | model, | |||
| 18212 | f_grid, | |||
| 18213 | abs_p, | |||
| 18214 | abs_t, | |||
| 18215 | vmr, | |||
| 18216 | verbosity ); | |||
| 18217 | } | |||
| 18218 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 18219 | { | |||
| 18220 | ostringstream os; | |||
| 18221 | os << "ERROR: Continuum model " << name << " requires NO input\n" | |||
| 18222 | << "parameters for the model " << model << ",\n" | |||
| 18223 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 18224 | << "This ambiguity can not be solved by arts.\n" | |||
| 18225 | << "Please see the arts user guide chapter 3.\n"; | |||
| 18226 | throw runtime_error(os.str()); | |||
| 18227 | } | |||
| 18228 | } | |||
| 18229 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 18230 | else if ( "H2O-ContMPM93"==name ) | |||
| 18231 | { | |||
| 18232 | // self and foreign continuum term are simultaneously calculated | |||
| 18233 | // since the parameterization can not be divided up in these two | |||
| 18234 | // terms because they are not additive terms. | |||
| 18235 | // | |||
| 18236 | // specific continuum parameters and units: | |||
| 18237 | // OUTPUT | |||
| 18238 | // pxsec : [1/m], | |||
| 18239 | // INPUT | |||
| 18240 | // parameters[0] : pseudo continuum line frequency [Hz] | |||
| 18241 | // parameters[1] : pseudo continuum line strength parameter [Hz/Pa] | |||
| 18242 | // parameters[2] : pseudo continuum line strength temperature parameter [1] | |||
| 18243 | // parameters[3] : pseudo continuum line broadening parameter [Hz/Pa] | |||
| 18244 | // parameters[4] : pseudo continuum line broadening parameter [1] | |||
| 18245 | // parameters[5] : pseudo continuum line broadening parameter [1] | |||
| 18246 | // parameters[6] : pseudo continuum line broadening parameter [1] | |||
| 18247 | // f_grid : [Hz] | |||
| 18248 | // abs_p : [Pa] | |||
| 18249 | // abs_t : [K] | |||
| 18250 | // vmr : [1] | |||
| 18251 | // | |||
| 18252 | const int Nparam = 7; | |||
| 18253 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 18254 | { | |||
| 18255 | out3 << "Continuum model " << name << " is running with \n" | |||
| 18256 | << "user defined parameters according to model " << model << ".\n"; | |||
| 18257 | MPM93_H2O_continuum( pxsec, | |||
| 18258 | parameters[0], | |||
| 18259 | parameters[1], | |||
| 18260 | parameters[2], | |||
| 18261 | parameters[3], | |||
| 18262 | parameters[4], | |||
| 18263 | parameters[5], | |||
| 18264 | parameters[6], | |||
| 18265 | model, | |||
| 18266 | f_grid, | |||
| 18267 | abs_p, | |||
| 18268 | abs_t, | |||
| 18269 | vmr, | |||
| 18270 | verbosity ); | |||
| 18271 | } | |||
| 18272 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 18273 | { | |||
| 18274 | ostringstream os; | |||
| 18275 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 18276 | << "parameters for the model " << model << ",\n" | |||
| 18277 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 18278 | throw runtime_error(os.str()); | |||
| 18279 | } | |||
| 18280 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 18281 | { | |||
| 18282 | out3 << "Continuum model " << name << " running with \n" | |||
| 18283 | << "the parameters for model " << model << ".\n"; | |||
| 18284 | MPM93_H2O_continuum( pxsec, | |||
| 18285 | 0.00, | |||
| 18286 | 0.00, | |||
| 18287 | 0.00, | |||
| 18288 | 0.00, | |||
| 18289 | 0.00, | |||
| 18290 | 0.00, | |||
| 18291 | 0.00, | |||
| 18292 | model, | |||
| 18293 | f_grid, | |||
| 18294 | abs_p, | |||
| 18295 | abs_t, | |||
| 18296 | vmr, | |||
| 18297 | verbosity ); | |||
| 18298 | } | |||
| 18299 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 18300 | { | |||
| 18301 | ostringstream os; | |||
| 18302 | os << "ERROR: Continuum model " << name << " requires NO input\n" | |||
| 18303 | << "parameters for the model " << model << ",\n" | |||
| 18304 | << "but you specified " << parameters.nelem() << " parameters. " << "\n" | |||
| 18305 | << "This ambiguity can not be solved by arts.\n" | |||
| 18306 | << "Please see the arts user guide chapter 3.\n"; | |||
| 18307 | throw runtime_error(os.str()); | |||
| 18308 | } | |||
| 18309 | } | |||
| 18310 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 18311 | else if ( "H2O-ForeignContATM01"==name ) | |||
| 18312 | { | |||
| 18313 | // Foreign wet continuum term. | |||
| 18314 | // | |||
| 18315 | // Pardo et al., IEEE, Trans. Ant. Prop., | |||
| 18316 | // Vol 49, No 12, pp. 1683-1694, 2001. | |||
| 18317 | // | |||
| 18318 | // specific continuum parameters and units: | |||
| 18319 | // OUTPUT | |||
| 18320 | // pxsec : [1/m], | |||
| 18321 | // INPUT | |||
| 18322 | // parameters[0] : pseudo continuum line frequency [Hz] | |||
| 18323 | // f_grid : [Hz] | |||
| 18324 | // abs_p : [Pa] | |||
| 18325 | // abs_t : [K] | |||
| 18326 | // vmr : [1] | |||
| 18327 | // | |||
| 18328 | const int Nparam = 1; | |||
| 18329 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 18330 | { | |||
| 18331 | out3 << "Continuum model " << name << " is running with \n" | |||
| 18332 | << "user defined parameters according to model " << model << ".\n"; | |||
| 18333 | Pardo_ATM_H2O_ForeignContinuum( pxsec, | |||
| 18334 | parameters[0], | |||
| 18335 | model, | |||
| 18336 | f_grid, | |||
| 18337 | abs_p, | |||
| 18338 | abs_t, | |||
| 18339 | vmr, | |||
| 18340 | verbosity ); | |||
| 18341 | } | |||
| 18342 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 18343 | { | |||
| 18344 | ostringstream os; | |||
| 18345 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 18346 | << "parameters for the model " << model << ",\n" | |||
| 18347 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 18348 | throw runtime_error(os.str()); | |||
| 18349 | } | |||
| 18350 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 18351 | { | |||
| 18352 | out3 << "Continuum model " << name << " running with \n" | |||
| 18353 | << "the parameters for model " << model << ".\n"; | |||
| 18354 | Pardo_ATM_H2O_ForeignContinuum( pxsec, | |||
| 18355 | 0.000, | |||
| 18356 | model, | |||
| 18357 | f_grid, | |||
| 18358 | abs_p, | |||
| 18359 | abs_t, | |||
| 18360 | vmr, | |||
| 18361 | verbosity ); | |||
| 18362 | } | |||
| 18363 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 18364 | { | |||
| 18365 | ostringstream os; | |||
| 18366 | os << "ERROR: Continuum model " << name << " requires NO input\n" | |||
| 18367 | << "parameters for the model " << model << ",\n" | |||
| 18368 | << "but you specified " << parameters.nelem() << " parameters. " << "\n" | |||
| 18369 | << "This ambiguity can not be solved by arts.\n" | |||
| 18370 | << "Please see the arts user guide chapter 3.\n"; | |||
| 18371 | throw runtime_error(os.str()); | |||
| 18372 | } | |||
| 18373 | } | |||
| 18374 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 18375 | else if ( "H2O-SelfContCKD222"==name ) | |||
| 18376 | { | |||
| 18377 | // OUTPUT: | |||
| 18378 | // pxsec cross section (absorption/volume mixing ratio) of | |||
| 18379 | // H2O self continuum according to CKD2.2.2 [1/m] | |||
| 18380 | // INPUT: | |||
| 18381 | // parameters[0] strength scaling factor [1] | |||
| 18382 | // model allows user defined input parameter set | |||
| 18383 | // (Cin) or choice of | |||
| 18384 | // pre-defined parameters of specific models (see note below). | |||
| 18385 | // f_grid predefined frequency grid [Hz] | |||
| 18386 | // abs_p predefined pressure grid [Pa] | |||
| 18387 | // abs_t predefined temperature grid [K] | |||
| 18388 | // vmr H2O volume mixing ratio profile [1] | |||
| 18389 | // | |||
| 18390 | // WWW resource: ftp.aer.com/aer_contnm_ckd | |||
| 18391 | const int Nparam = 1; | |||
| 18392 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 18393 | { | |||
| 18394 | out3 << "Continuum model " << name << " is running with \n" | |||
| 18395 | << "user defined parameters according to model " << model << ".\n"; | |||
| 18396 | CKD_222_self_h2o( pxsec, | |||
| 18397 | parameters[0], | |||
| 18398 | model, | |||
| 18399 | f_grid, | |||
| 18400 | abs_p, | |||
| 18401 | abs_t, | |||
| 18402 | vmr, | |||
| 18403 | verbosity ); | |||
| 18404 | } | |||
| 18405 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 18406 | { | |||
| 18407 | ostringstream os; | |||
| 18408 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 18409 | << "parameters for the model " << model << ",\n" | |||
| 18410 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 18411 | throw runtime_error(os.str()); | |||
| 18412 | } | |||
| 18413 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 18414 | { | |||
| 18415 | out3 << "Continuum model " << name << " running with \n" | |||
| 18416 | << "the parameters for model " << model << ".\n"; | |||
| 18417 | CKD_222_self_h2o( pxsec, | |||
| 18418 | 0.000, | |||
| 18419 | model, | |||
| 18420 | f_grid, | |||
| 18421 | abs_p, | |||
| 18422 | abs_t, | |||
| 18423 | vmr, | |||
| 18424 | verbosity ); | |||
| 18425 | } | |||
| 18426 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 18427 | { | |||
| 18428 | ostringstream os; | |||
| 18429 | os << "ERROR: continuum model " << name << " requires NO input\n" | |||
| 18430 | << "parameters for the model " << model << ",\n" | |||
| 18431 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 18432 | << "This ambiguity can not be solved by arts.\n" | |||
| 18433 | << "Please see the arts user guide chapter 3.\n"; | |||
| 18434 | throw runtime_error(os.str()); | |||
| 18435 | } | |||
| 18436 | } | |||
| 18437 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 18438 | else if ( "H2O-ForeignContCKD222"==name ) | |||
| 18439 | { | |||
| 18440 | // OUTPUT: | |||
| 18441 | // pxsec cross section (absorption/volume mixing ratio) of | |||
| 18442 | // H2O foreign continuum according to CKD2.2.2 [1/m] | |||
| 18443 | // INPUT: | |||
| 18444 | // parameters[0] strength scaling factor [1] | |||
| 18445 | // model allows user defined input parameter set | |||
| 18446 | // (Cin) or choice of | |||
| 18447 | // pre-defined parameters of specific models (see note below). | |||
| 18448 | // f_grid predefined frequency grid [Hz] | |||
| 18449 | // abs_p predefined pressure grid [Pa] | |||
| 18450 | // abs_t predefined temperature grid [K] | |||
| 18451 | // vmr H2O volume mixing ratio profile [1] | |||
| 18452 | // | |||
| 18453 | // WWW resource: ftp.aer.com/aer_contnm_ckd | |||
| 18454 | const int Nparam = 1; | |||
| 18455 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 18456 | { | |||
| 18457 | out3 << "Continuum model " << name << " is running with \n" | |||
| 18458 | << "user defined parameters according to model " << model << ".\n"; | |||
| 18459 | CKD_222_foreign_h2o( pxsec, | |||
| 18460 | parameters[0], | |||
| 18461 | model, | |||
| 18462 | f_grid, | |||
| 18463 | abs_p, | |||
| 18464 | abs_t, | |||
| 18465 | vmr, | |||
| 18466 | verbosity ); | |||
| 18467 | } | |||
| 18468 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 18469 | { | |||
| 18470 | ostringstream os; | |||
| 18471 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 18472 | << "parameters for the model " << model << ",\n" | |||
| 18473 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 18474 | throw runtime_error(os.str()); | |||
| 18475 | } | |||
| 18476 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 18477 | { | |||
| 18478 | out3 << "Continuum model " << name << " running with \n" | |||
| 18479 | << "the parameters for model " << model << ".\n"; | |||
| 18480 | CKD_222_foreign_h2o( pxsec, | |||
| 18481 | 0.000, | |||
| 18482 | model, | |||
| 18483 | f_grid, | |||
| 18484 | abs_p, | |||
| 18485 | abs_t, | |||
| 18486 | vmr, | |||
| 18487 | verbosity ); | |||
| 18488 | } | |||
| 18489 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 18490 | { | |||
| 18491 | ostringstream os; | |||
| 18492 | os << "ERROR: continuum model " << name << " requires NO input\n" | |||
| 18493 | << "parameters for the model " << model << ",\n" | |||
| 18494 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 18495 | << "This ambiguity can not be solved by arts.\n" | |||
| 18496 | << "Please see the arts user guide chapter 3.\n"; | |||
| 18497 | throw runtime_error(os.str()); | |||
| 18498 | } | |||
| 18499 | } | |||
| 18500 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 18501 | else if ( "H2O-SelfContCKD242"==name ) | |||
| 18502 | { | |||
| 18503 | // OUTPUT: | |||
| 18504 | // pxsec cross section (absorption/volume mixing ratio) of | |||
| 18505 | // H2O self continuum according to CKD2.4.2 [1/m] | |||
| 18506 | // INPUT: | |||
| 18507 | // parameters[0] strength scaling factor [1] | |||
| 18508 | // model allows user defined input parameter set | |||
| 18509 | // (Cin) or choice of | |||
| 18510 | // pre-defined parameters of specific models (see note below). | |||
| 18511 | // f_grid predefined frequency grid [Hz] | |||
| 18512 | // abs_p predefined pressure grid [Pa] | |||
| 18513 | // abs_t predefined temperature grid [K] | |||
| 18514 | // vmr H2O volume mixing ratio profile [1] | |||
| 18515 | // | |||
| 18516 | // WWW resource: ftp.aer.com/aer_contnm_ckd | |||
| 18517 | const int Nparam = 1; | |||
| 18518 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 18519 | { | |||
| 18520 | out3 << "Continuum model " << name << " is running with \n" | |||
| 18521 | << "user defined parameters according to model " << model << ".\n"; | |||
| 18522 | CKD_242_self_h2o( pxsec, | |||
| 18523 | parameters[0], | |||
| 18524 | model, | |||
| 18525 | f_grid, | |||
| 18526 | abs_p, | |||
| 18527 | abs_t, | |||
| 18528 | vmr, | |||
| 18529 | verbosity ); | |||
| 18530 | } | |||
| 18531 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 18532 | { | |||
| 18533 | ostringstream os; | |||
| 18534 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 18535 | << "parameters for the model " << model << ",\n" | |||
| 18536 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 18537 | throw runtime_error(os.str()); | |||
| 18538 | } | |||
| 18539 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 18540 | { | |||
| 18541 | out3 << "Continuum model " << name << " running with \n" | |||
| 18542 | << "the parameters for model " << model << ".\n"; | |||
| 18543 | CKD_242_self_h2o( pxsec, | |||
| 18544 | 0.000, | |||
| 18545 | model, | |||
| 18546 | f_grid, | |||
| 18547 | abs_p, | |||
| 18548 | abs_t, | |||
| 18549 | vmr, | |||
| 18550 | verbosity ); | |||
| 18551 | } | |||
| 18552 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 18553 | { | |||
| 18554 | ostringstream os; | |||
| 18555 | os << "ERROR: continuum model " << name << " requires NO input\n" | |||
| 18556 | << "parameters for the model " << model << ",\n" | |||
| 18557 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 18558 | << "This ambiguity can not be solved by arts.\n" | |||
| 18559 | << "Please see the arts user guide chapter 3.\n"; | |||
| 18560 | throw runtime_error(os.str()); | |||
| 18561 | } | |||
| 18562 | } | |||
| 18563 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 18564 | else if ( "H2O-ForeignContCKD242"==name ) | |||
| 18565 | { | |||
| 18566 | // OUTPUT: | |||
| 18567 | // pxsec cross section (absorption/volume mixing ratio) of | |||
| 18568 | // H2O foreign continuum according to CKD2.4.2 [1/m] | |||
| 18569 | // INPUT: | |||
| 18570 | // parameters[0] strength scaling factor [1] | |||
| 18571 | // model allows user defined input parameter set | |||
| 18572 | // (Cin) or choice of | |||
| 18573 | // pre-defined parameters of specific models (see note below). | |||
| 18574 | // f_grid predefined frequency grid [Hz] | |||
| 18575 | // abs_p predefined pressure grid [Pa] | |||
| 18576 | // abs_t predefined temperature grid [K] | |||
| 18577 | // vmr H2O volume mixing ratio profile [1] | |||
| 18578 | // | |||
| 18579 | // WWW resource: ftp.aer.com/aer_contnm_ckd | |||
| 18580 | const int Nparam = 1; | |||
| 18581 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 18582 | { | |||
| 18583 | out3 << "Continuum model " << name << " is running with \n" | |||
| 18584 | << "user defined parameters according to model " << model << ".\n"; | |||
| 18585 | CKD_242_foreign_h2o( pxsec, | |||
| 18586 | parameters[0], | |||
| 18587 | model, | |||
| 18588 | f_grid, | |||
| 18589 | abs_p, | |||
| 18590 | abs_t, | |||
| 18591 | vmr, | |||
| 18592 | verbosity ); | |||
| 18593 | } | |||
| 18594 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 18595 | { | |||
| 18596 | ostringstream os; | |||
| 18597 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 18598 | << "parameters for the model " << model << ",\n" | |||
| 18599 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 18600 | throw runtime_error(os.str()); | |||
| 18601 | } | |||
| 18602 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 18603 | { | |||
| 18604 | out3 << "Continuum model " << name << " running with \n" | |||
| 18605 | << "the parameters for model " << model << ".\n"; | |||
| 18606 | CKD_242_foreign_h2o( pxsec, | |||
| 18607 | 0.000, | |||
| 18608 | model, | |||
| 18609 | f_grid, | |||
| 18610 | abs_p, | |||
| 18611 | abs_t, | |||
| 18612 | vmr, | |||
| 18613 | verbosity ); | |||
| 18614 | } | |||
| 18615 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 18616 | { | |||
| 18617 | ostringstream os; | |||
| 18618 | os << "ERROR: continuum model " << name << " requires NO input\n" | |||
| 18619 | << "parameters for the model " << model << ",\n" | |||
| 18620 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 18621 | << "This ambiguity can not be solved by arts.\n" | |||
| 18622 | << "Please see the arts user guide chapter 3.\n"; | |||
| 18623 | throw runtime_error(os.str()); | |||
| 18624 | } | |||
| 18625 | } | |||
| 18626 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 18627 | else if ( "H2O-SelfContCKDMT100"==name ) | |||
| 18628 | { | |||
| 18629 | // OUTPUT: | |||
| 18630 | // pxsec cross section (absorption/volume mixing ratio) of | |||
| 18631 | // H2O self continuum according to CKD MT 1.00 [1/m] | |||
| 18632 | // INPUT: | |||
| 18633 | // parameters[0] strength scaling factor [1] | |||
| 18634 | // model allows user defined input parameter set | |||
| 18635 | // (Cin) or choice of | |||
| 18636 | // pre-defined parameters of specific models (see note below). | |||
| 18637 | // f_grid predefined frequency grid [Hz] | |||
| 18638 | // abs_p predefined pressure grid [Pa] | |||
| 18639 | // abs_t predefined temperature grid [K] | |||
| 18640 | // vmr H2O volume mixing ratio profile [1] | |||
| 18641 | // | |||
| 18642 | // WWW resource: ftp.aer.com/aer_contnm_ckd | |||
| 18643 | const int Nparam = 1; | |||
| 18644 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 18645 | { | |||
| 18646 | out3 << "Continuum model " << name << " is running with \n" | |||
| 18647 | << "user defined parameters according to model " << model << ".\n"; | |||
| 18648 | CKD_mt_100_self_h2o( pxsec, | |||
| 18649 | parameters[0], | |||
| 18650 | model, | |||
| 18651 | f_grid, | |||
| 18652 | abs_p, | |||
| 18653 | abs_t, | |||
| 18654 | vmr, | |||
| 18655 | verbosity ); | |||
| 18656 | } | |||
| 18657 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 18658 | { | |||
| 18659 | ostringstream os; | |||
| 18660 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 18661 | << "parameters for the model " << model << ",\n" | |||
| 18662 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 18663 | throw runtime_error(os.str()); | |||
| 18664 | } | |||
| 18665 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 18666 | { | |||
| 18667 | out3 << "Continuum model " << name << " running with \n" | |||
| 18668 | << "the parameters for model " << model << ".\n"; | |||
| 18669 | CKD_mt_100_self_h2o( pxsec, | |||
| 18670 | 0.000, | |||
| 18671 | model, | |||
| 18672 | f_grid, | |||
| 18673 | abs_p, | |||
| 18674 | abs_t, | |||
| 18675 | vmr, | |||
| 18676 | verbosity ); | |||
| 18677 | } | |||
| 18678 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 18679 | { | |||
| 18680 | ostringstream os; | |||
| 18681 | os << "ERROR: continuum model " << name << " requires NO input\n" | |||
| 18682 | << "parameters for the model " << model << ",\n" | |||
| 18683 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 18684 | << "This ambiguity can not be solved by arts.\n" | |||
| 18685 | << "Please see the arts user guide chapter 3.\n"; | |||
| 18686 | throw runtime_error(os.str()); | |||
| 18687 | } | |||
| 18688 | } | |||
| 18689 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 18690 | else if ( "H2O-ForeignContCKDMT100"==name ) | |||
| 18691 | { | |||
| 18692 | // OUTPUT: | |||
| 18693 | // pxsec cross section (absorption/volume mixing ratio) of | |||
| 18694 | // H2O foreign continuum according to CKD MT 1.00 [1/m] | |||
| 18695 | // INPUT: | |||
| 18696 | // parameters[0] strength scaling factor [1] | |||
| 18697 | // model allows user defined input parameter set | |||
| 18698 | // (Cin) or choice of | |||
| 18699 | // pre-defined parameters of specific models (see note below). | |||
| 18700 | // f_grid predefined frequency grid [Hz] | |||
| 18701 | // abs_p predefined pressure grid [Pa] | |||
| 18702 | // abs_t predefined temperature grid [K] | |||
| 18703 | // vmr H2O volume mixing ratio profile [1] | |||
| 18704 | // | |||
| 18705 | // WWW resource: ftp.aer.com/aer_contnm_ckd | |||
| 18706 | const int Nparam = 1; | |||
| 18707 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 18708 | { | |||
| 18709 | out3 << "Continuum model " << name << " is running with \n" | |||
| 18710 | << "user defined parameters according to model " << model << ".\n"; | |||
| 18711 | CKD_mt_100_foreign_h2o( pxsec, | |||
| 18712 | parameters[0], | |||
| 18713 | model, | |||
| 18714 | f_grid, | |||
| 18715 | abs_p, | |||
| 18716 | abs_t, | |||
| 18717 | vmr, | |||
| 18718 | verbosity ); | |||
| 18719 | } | |||
| 18720 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 18721 | { | |||
| 18722 | ostringstream os; | |||
| 18723 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 18724 | << "parameters for the model " << model << ",\n" | |||
| 18725 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 18726 | throw runtime_error(os.str()); | |||
| 18727 | } | |||
| 18728 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 18729 | { | |||
| 18730 | out3 << "Continuum model " << name << " running with \n" | |||
| 18731 | << "the parameters for model " << model << ".\n"; | |||
| 18732 | CKD_mt_100_foreign_h2o( pxsec, | |||
| 18733 | 0.000, | |||
| 18734 | model, | |||
| 18735 | f_grid, | |||
| 18736 | abs_p, | |||
| 18737 | abs_t, | |||
| 18738 | vmr, | |||
| 18739 | verbosity ); | |||
| 18740 | } | |||
| 18741 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 18742 | { | |||
| 18743 | ostringstream os; | |||
| 18744 | os << "ERROR: continuum model " << name << " requires NO input\n" | |||
| 18745 | << "parameters for the model " << model << ",\n" | |||
| 18746 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 18747 | << "This ambiguity can not be solved by arts.\n" | |||
| 18748 | << "Please see the arts user guide chapter 3.\n"; | |||
| 18749 | throw runtime_error(os.str()); | |||
| 18750 | } | |||
| 18751 | } | |||
| 18752 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 18753 | else if ( "H2O-SelfContCKDMT252"==name ) | |||
| 18754 | { | |||
| 18755 | // OUTPUT: | |||
| 18756 | // pxsec cross section (absorption/volume mixing ratio) of | |||
| 18757 | // H2O self continuum according to CKD MT 2.50 [1/m] | |||
| 18758 | // INPUT: | |||
| 18759 | // parameters[0] strength scaling factor [1] | |||
| 18760 | // model allows user defined input parameter set | |||
| 18761 | // (Cin) or choice of | |||
| 18762 | // pre-defined parameters of specific models (see note below). | |||
| 18763 | // f_grid predefined frequency grid [Hz] | |||
| 18764 | // abs_p predefined pressure grid [Pa] | |||
| 18765 | // abs_t predefined temperature grid [K] | |||
| 18766 | // vmr H2O volume mixing ratio profile [1] | |||
| 18767 | // | |||
| 18768 | // WWW resource: ftp.aer.com/aer_contnm_ckd | |||
| 18769 | const int Nparam = 1; | |||
| 18770 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 18771 | { | |||
| 18772 | out3 << "Continuum model " << name << " is running with \n" | |||
| 18773 | << "user defined parameters according to model " << model << ".\n"; | |||
| 18774 | CKD_mt_250_self_h2o( pxsec, | |||
| 18775 | parameters[0], | |||
| 18776 | model, | |||
| 18777 | f_grid, | |||
| 18778 | abs_p, | |||
| 18779 | abs_t, | |||
| 18780 | vmr, | |||
| 18781 | verbosity ); | |||
| 18782 | } | |||
| 18783 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 18784 | { | |||
| 18785 | ostringstream os; | |||
| 18786 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 18787 | << "parameters for the model " << model << ",\n" | |||
| 18788 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 18789 | throw runtime_error(os.str()); | |||
| 18790 | } | |||
| 18791 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 18792 | { | |||
| 18793 | out3 << "Continuum model " << name << " running with \n" | |||
| 18794 | << "the parameters for model " << model << ".\n"; | |||
| 18795 | CKD_mt_250_self_h2o( pxsec, | |||
| 18796 | 0.000, | |||
| 18797 | model, | |||
| 18798 | f_grid, | |||
| 18799 | abs_p, | |||
| 18800 | abs_t, | |||
| 18801 | vmr, | |||
| 18802 | verbosity ); | |||
| 18803 | } | |||
| 18804 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 18805 | { | |||
| 18806 | ostringstream os; | |||
| 18807 | os << "ERROR: continuum model " << name << " requires NO input\n" | |||
| 18808 | << "parameters for the model " << model << ",\n" | |||
| 18809 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 18810 | << "This ambiguity can not be solved by arts.\n" | |||
| 18811 | << "Please see the arts user guide chapter 3.\n"; | |||
| 18812 | throw runtime_error(os.str()); | |||
| 18813 | } | |||
| 18814 | } | |||
| 18815 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 18816 | else if ( "H2O-ForeignContCKDMT252"==name ) | |||
| 18817 | { | |||
| 18818 | // OUTPUT: | |||
| 18819 | // pxsec cross section (absorption/volume mixing ratio) of | |||
| 18820 | // H2O foreign continuum according to CKD MT 2.50 [1/m] | |||
| 18821 | // INPUT: | |||
| 18822 | // parameters[0] strength scaling factor [1] | |||
| 18823 | // model allows user defined input parameter set | |||
| 18824 | // (Cin) or choice of | |||
| 18825 | // pre-defined parameters of specific models (see note below). | |||
| 18826 | // f_grid predefined frequency grid [Hz] | |||
| 18827 | // abs_p predefined pressure grid [Pa] | |||
| 18828 | // abs_t predefined temperature grid [K] | |||
| 18829 | // vmr H2O volume mixing ratio profile [1] | |||
| 18830 | // | |||
| 18831 | // WWW resource: ftp.aer.com/aer_contnm_ckd | |||
| 18832 | const int Nparam = 1; | |||
| 18833 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 18834 | { | |||
| 18835 | out3 << "Continuum model " << name << " is running with \n" | |||
| 18836 | << "user defined parameters according to model " << model << ".\n"; | |||
| 18837 | CKD_mt_250_foreign_h2o( pxsec, | |||
| 18838 | parameters[0], | |||
| 18839 | model, | |||
| 18840 | f_grid, | |||
| 18841 | abs_p, | |||
| 18842 | abs_t, | |||
| 18843 | vmr, | |||
| 18844 | verbosity ); | |||
| 18845 | } | |||
| 18846 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 18847 | { | |||
| 18848 | ostringstream os; | |||
| 18849 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 18850 | << "parameters for the model " << model << ",\n" | |||
| 18851 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 18852 | throw runtime_error(os.str()); | |||
| 18853 | } | |||
| 18854 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 18855 | { | |||
| 18856 | out3 << "Continuum model " << name << " running with \n" | |||
| 18857 | << "the parameters for model " << model << ".\n"; | |||
| 18858 | CKD_mt_250_foreign_h2o( pxsec, | |||
| 18859 | 0.000, | |||
| 18860 | model, | |||
| 18861 | f_grid, | |||
| 18862 | abs_p, | |||
| 18863 | abs_t, | |||
| 18864 | vmr, | |||
| 18865 | verbosity ); | |||
| 18866 | } | |||
| 18867 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 18868 | { | |||
| 18869 | ostringstream os; | |||
| 18870 | os << "ERROR: continuum model " << name << " requires NO input\n" | |||
| 18871 | << "parameters for the model " << model << ",\n" | |||
| 18872 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 18873 | << "This ambiguity can not be solved by arts.\n" | |||
| 18874 | << "Please see the arts user guide chapter 3.\n"; | |||
| 18875 | throw runtime_error(os.str()); | |||
| 18876 | } | |||
| 18877 | } | |||
| 18878 | ||||
| 18879 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 18880 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 18881 | else if ( "H2O-SelfContCKDMT320"==name ) | |||
| 18882 | { | |||
| 18883 | // OUTPUT: | |||
| 18884 | // pxsec cross section (absorption/volume mixing ratio) of | |||
| 18885 | // H2O self continuum according to CKD MT 2.50 [1/m] | |||
| 18886 | // INPUT: | |||
| 18887 | // parameters[0] strength scaling factor [1] | |||
| 18888 | // model allows user defined input parameter set | |||
| 18889 | // (Cin) or choice of | |||
| 18890 | // pre-defined parameters of specific models (see note below). | |||
| 18891 | // f_grid predefined frequency grid [Hz] | |||
| 18892 | // abs_p predefined pressure grid [Pa] | |||
| 18893 | // abs_t predefined temperature grid [K] | |||
| 18894 | // vmr H2O volume mixing ratio profile [1] | |||
| 18895 | // | |||
| 18896 | // WWW resource: ftp.aer.com/aer_contnm_ckd | |||
| 18897 | const int Nparam = 1; | |||
| 18898 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 18899 | { | |||
| 18900 | out3 << "Continuum model " << name << " is running with \n" | |||
| 18901 | << "user defined parameters according to model " << model << ".\n"; | |||
| 18902 | CKD_mt_320_self_h2o( pxsec, | |||
| 18903 | parameters[0], | |||
| 18904 | model, | |||
| 18905 | f_grid, | |||
| 18906 | abs_p, | |||
| 18907 | abs_t, | |||
| 18908 | vmr, | |||
| 18909 | verbosity ); | |||
| 18910 | } | |||
| 18911 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 18912 | { | |||
| 18913 | ostringstream os; | |||
| 18914 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 18915 | << "parameters for the model " << model << ",\n" | |||
| 18916 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 18917 | throw runtime_error(os.str()); | |||
| 18918 | } | |||
| 18919 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 18920 | { | |||
| 18921 | out3 << "Continuum model " << name << " running with \n" | |||
| 18922 | << "the parameters for model " << model << ".\n"; | |||
| 18923 | CKD_mt_320_self_h2o( pxsec, | |||
| 18924 | 0.000, | |||
| 18925 | model, | |||
| 18926 | f_grid, | |||
| 18927 | abs_p, | |||
| 18928 | abs_t, | |||
| 18929 | vmr, | |||
| 18930 | verbosity ); | |||
| 18931 | } | |||
| 18932 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 18933 | { | |||
| 18934 | ostringstream os; | |||
| 18935 | os << "ERROR: continuum model " << name << " requires NO input\n" | |||
| 18936 | << "parameters for the model " << model << ",\n" | |||
| 18937 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 18938 | << "This ambiguity can not be solved by arts.\n" | |||
| 18939 | << "Please see the arts user guide chapter 3.\n"; | |||
| 18940 | throw runtime_error(os.str()); | |||
| 18941 | } | |||
| 18942 | } | |||
| 18943 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 18944 | else if ( "H2O-ForeignContCKDMT320"==name ) | |||
| 18945 | { | |||
| 18946 | // OUTPUT: | |||
| 18947 | // pxsec cross section (absorption/volume mixing ratio) of | |||
| 18948 | // H2O foreign continuum according to CKD MT 2.50 [1/m] | |||
| 18949 | // INPUT: | |||
| 18950 | // parameters[0] strength scaling factor [1] | |||
| 18951 | // model allows user defined input parameter set | |||
| 18952 | // (Cin) or choice of | |||
| 18953 | // pre-defined parameters of specific models (see note below). | |||
| 18954 | // f_grid predefined frequency grid [Hz] | |||
| 18955 | // abs_p predefined pressure grid [Pa] | |||
| 18956 | // abs_t predefined temperature grid [K] | |||
| 18957 | // vmr H2O volume mixing ratio profile [1] | |||
| 18958 | // | |||
| 18959 | // WWW resource: ftp.aer.com/aer_contnm_ckd | |||
| 18960 | const int Nparam = 1; | |||
| 18961 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 18962 | { | |||
| 18963 | out3 << "Continuum model " << name << " is running with \n" | |||
| 18964 | << "user defined parameters according to model " << model << ".\n"; | |||
| 18965 | CKD_mt_320_foreign_h2o( pxsec, | |||
| 18966 | parameters[0], | |||
| 18967 | model, | |||
| 18968 | f_grid, | |||
| 18969 | abs_p, | |||
| 18970 | abs_t, | |||
| 18971 | vmr, | |||
| 18972 | verbosity ); | |||
| 18973 | } | |||
| 18974 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 18975 | { | |||
| 18976 | ostringstream os; | |||
| 18977 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 18978 | << "parameters for the model " << model << ",\n" | |||
| 18979 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 18980 | throw runtime_error(os.str()); | |||
| 18981 | } | |||
| 18982 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 18983 | { | |||
| 18984 | out3 << "Continuum model " << name << " running with \n" | |||
| 18985 | << "the parameters for model " << model << ".\n"; | |||
| 18986 | CKD_mt_320_foreign_h2o( pxsec, | |||
| 18987 | 0.000, | |||
| 18988 | model, | |||
| 18989 | f_grid, | |||
| 18990 | abs_p, | |||
| 18991 | abs_t, | |||
| 18992 | vmr, | |||
| 18993 | verbosity ); | |||
| 18994 | } | |||
| 18995 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 18996 | { | |||
| 18997 | ostringstream os; | |||
| 18998 | os << "ERROR: continuum model " << name << " requires NO input\n" | |||
| 18999 | << "parameters for the model " << model << ",\n" | |||
| 19000 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 19001 | << "This ambiguity can not be solved by arts.\n" | |||
| 19002 | << "Please see the arts user guide chapter 3.\n"; | |||
| 19003 | throw runtime_error(os.str()); | |||
| 19004 | } | |||
| 19005 | } | |||
| 19006 | ||||
| 19007 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 19008 | ||||
| 19009 | else if ( "H2O-SelfContCKD24"==name ) | |||
| 19010 | { | |||
| 19011 | // OUTPUT: | |||
| 19012 | // pxsec cross section (absorption/volume mixing ratio) of | |||
| 19013 | // H2O continuum according to CKD2.4 [1/m] | |||
| 19014 | // INPUT: | |||
| 19015 | // parameters[0] strength scaling factor [1] | |||
| 19016 | // model allows user defined input parameter set | |||
| 19017 | // (Cin) or choice of | |||
| 19018 | // pre-defined parameters of specific models (see note below). | |||
| 19019 | // f_grid predefined frequency grid [Hz] | |||
| 19020 | // abs_p predefined pressure grid [Pa] | |||
| 19021 | // abs_t predefined temperature grid [K] | |||
| 19022 | // abs_n2 N2 volume mixing ratio profile [1] | |||
| 19023 | // vmr H2O volume mixing ratio profile [1] | |||
| 19024 | // | |||
| 19025 | // WWW resource: ftp.aer.com/aer_contnm_ckd | |||
| 19026 | ||||
| 19027 | // abs_n2 needed here. check, whether this is valid. | |||
| 19028 | if( abs_n2.sum() < -1. ) | |||
| 19029 | { | |||
| 19030 | ostringstream os; | |||
| 19031 | os << "Continuum/full model tag " << name | |||
| 19032 | << " requires N2-vmr, but no tag group contains N2!"; | |||
| 19033 | throw runtime_error(os.str()); | |||
| 19034 | } | |||
| 19035 | ||||
| 19036 | const int Nparam = 1; | |||
| 19037 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 19038 | { | |||
| 19039 | out3 << "Continuum model " << name << " is running with \n" | |||
| 19040 | << "user defined parameters according to model " << model << ".\n"; | |||
| 19041 | CKD24_H20( pxsec, | |||
| 19042 | 0, | |||
| 19043 | parameters[0], | |||
| 19044 | model, | |||
| 19045 | f_grid, | |||
| 19046 | abs_p, | |||
| 19047 | abs_t, | |||
| 19048 | vmr, | |||
| 19049 | abs_n2, | |||
| 19050 | verbosity ); | |||
| 19051 | } | |||
| 19052 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 19053 | { | |||
| 19054 | ostringstream os; | |||
| 19055 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 19056 | << "parameters for the model " << model << ",\n" | |||
| 19057 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 19058 | throw runtime_error(os.str()); | |||
| 19059 | } | |||
| 19060 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 19061 | { | |||
| 19062 | out3 << "Continuum model " << name << " running with \n" | |||
| 19063 | << "the parameters for model " << model << ".\n"; | |||
| 19064 | CKD24_H20( pxsec, | |||
| 19065 | 0, | |||
| 19066 | 0.000, | |||
| 19067 | model, | |||
| 19068 | f_grid, | |||
| 19069 | abs_p, | |||
| 19070 | abs_t, | |||
| 19071 | vmr, | |||
| 19072 | abs_n2, | |||
| 19073 | verbosity ); | |||
| 19074 | } | |||
| 19075 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 19076 | { | |||
| 19077 | ostringstream os; | |||
| 19078 | os << "ERROR: continuum model " << name << " requires NO input\n" | |||
| 19079 | << "parameters for the model " << model << ",\n" | |||
| 19080 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 19081 | << "This ambiguity can not be solved by arts.\n" | |||
| 19082 | << "Please see the arts user guide chapter 3.\n"; | |||
| 19083 | throw runtime_error(os.str()); | |||
| 19084 | } | |||
| 19085 | } | |||
| 19086 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 19087 | else if ( "H2O-ForeignContCKD24"==name ) | |||
| 19088 | { | |||
| 19089 | // OUTPUT: | |||
| 19090 | // pxsec cross section (absorption/volume mixing ratio) of | |||
| 19091 | // H2O continuum according to CKD2.4 [1/m] | |||
| 19092 | // INPUT: | |||
| 19093 | // Cin strength scaling factor [1] | |||
| 19094 | // model allows user defined input parameter set | |||
| 19095 | // (Cin) or choice of | |||
| 19096 | // pre-defined parameters of specific models (see note below). | |||
| 19097 | // f_grid predefined frequency grid [Hz] | |||
| 19098 | // abs_p predefined pressure grid [Pa] | |||
| 19099 | // abs_t predefined temperature grid [K] | |||
| 19100 | // vmr H2O volume mixing ratio profile [1] | |||
| 19101 | // abs_n2 N2 volume mixing ratio profile [1] | |||
| 19102 | // | |||
| 19103 | // WWW resource: ftp.aer.com/aer_contnm_ckd | |||
| 19104 | ||||
| 19105 | if( abs_n2.sum() < -1. ) | |||
| 19106 | { | |||
| 19107 | ostringstream os; | |||
| 19108 | os << "Continuum/full model tag " << name | |||
| 19109 | << " requires N2-vmr, but no tag group contains N2!"; | |||
| 19110 | throw runtime_error(os.str()); | |||
| 19111 | } | |||
| 19112 | ||||
| 19113 | const int Nparam = 1; | |||
| 19114 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 19115 | { | |||
| 19116 | out3 << "Continuum model " << name << " is running with \n" | |||
| 19117 | << "user defined parameters according to model " << model << ".\n"; | |||
| 19118 | CKD24_H20( pxsec, | |||
| 19119 | 1, | |||
| 19120 | parameters[0], | |||
| 19121 | model, | |||
| 19122 | f_grid, | |||
| 19123 | abs_p, | |||
| 19124 | abs_t, | |||
| 19125 | vmr, | |||
| 19126 | abs_n2, | |||
| 19127 | verbosity ); | |||
| 19128 | } | |||
| 19129 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 19130 | { | |||
| 19131 | ostringstream os; | |||
| 19132 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 19133 | << "parameters for the model " << model << ",\n" | |||
| 19134 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 19135 | throw runtime_error(os.str()); | |||
| 19136 | } | |||
| 19137 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 19138 | { | |||
| 19139 | out3 << "Continuum model " << name << " running with \n" | |||
| 19140 | << "the parameters for model " << model << ".\n"; | |||
| 19141 | CKD24_H20( pxsec, | |||
| 19142 | 1, | |||
| 19143 | 0, | |||
| 19144 | model, | |||
| 19145 | f_grid, | |||
| 19146 | abs_p, | |||
| 19147 | abs_t, | |||
| 19148 | vmr, | |||
| 19149 | abs_n2, | |||
| 19150 | verbosity ); | |||
| 19151 | } | |||
| 19152 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 19153 | { | |||
| 19154 | ostringstream os; | |||
| 19155 | os << "ERROR: continuum model " << name << " requires NO input\n" | |||
| 19156 | << "parameters for the model " << model << ",\n" | |||
| 19157 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 19158 | << "This ambiguity can not be solved by arts.\n" | |||
| 19159 | << "Please see the arts user guide chapter 3.\n"; | |||
| 19160 | throw runtime_error(os.str()); | |||
| 19161 | } | |||
| 19162 | } | |||
| 19163 | // ============= H2O full models ====================================================== | |||
| 19164 | else if ( "H2O-CP98"==name ) | |||
| 19165 | { | |||
| 19166 | // | |||
| 19167 | // specific continuum parameters and units: | |||
| 19168 | // OUTPUT | |||
| 19169 | // pxsec : [1/m], | |||
| 19170 | // INPUT | |||
| 19171 | // parameters[0] : continuum scale factor (CC) [1] | |||
| 19172 | // parameters[1] : line strength scale factor (CL) [1] | |||
| 19173 | // parameters[2] : line broadening scale factor (CW) [1] | |||
| 19174 | // f_grid : [Hz] | |||
| 19175 | // abs_p : [Pa] | |||
| 19176 | // abs_t : [K] | |||
| 19177 | // vmr : [1] | |||
| 19178 | // | |||
| 19179 | const int Nparam = 3; | |||
| 19180 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 19181 | { | |||
| 19182 | out3 << "Full model " << name << " is running with \n" | |||
| 19183 | << "user defined parameters according to model " << model << ".\n"; | |||
| 19184 | CP98H2OAbsModel( pxsec, | |||
| 19185 | parameters[0], | |||
| 19186 | parameters[1], | |||
| 19187 | parameters[2], | |||
| 19188 | model, | |||
| 19189 | f_grid, | |||
| 19190 | abs_p, | |||
| 19191 | abs_t, | |||
| 19192 | vmr, | |||
| 19193 | verbosity ); | |||
| 19194 | } | |||
| 19195 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 19196 | { | |||
| 19197 | ostringstream os; | |||
| 19198 | os << "Full model " << name << " requires " << Nparam << " input\n" | |||
| 19199 | << "parameters for the model " << model << ",\n" | |||
| 19200 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 19201 | throw runtime_error(os.str()); | |||
| 19202 | } | |||
| 19203 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 19204 | { | |||
| 19205 | out3 << "Full model " << name << " running with \n" | |||
| 19206 | << "the parameters for model " << model << ".\n"; | |||
| 19207 | CP98H2OAbsModel( pxsec, | |||
| 19208 | 0.00, | |||
| 19209 | 0.00, | |||
| 19210 | 0.00, | |||
| 19211 | model, | |||
| 19212 | f_grid, | |||
| 19213 | abs_p, | |||
| 19214 | abs_t, | |||
| 19215 | vmr, | |||
| 19216 | verbosity ); | |||
| 19217 | } | |||
| 19218 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 19219 | { | |||
| 19220 | ostringstream os; | |||
| 19221 | os << "ERROR: Full model " << name << " requires NO input\n" | |||
| 19222 | << "parameters for the model " << model << ",\n" | |||
| 19223 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 19224 | << "This ambiguity can not be solved by arts.\n" | |||
| 19225 | << "Please see the arts user guide chapter 3.\n"; | |||
| 19226 | throw runtime_error(os.str()); | |||
| 19227 | } | |||
| 19228 | } | |||
| 19229 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 19230 | else if ( "H2O-MPM87"==name ) | |||
| 19231 | { | |||
| 19232 | // | |||
| 19233 | // specific continuum parameters and units: | |||
| 19234 | // a) output | |||
| 19235 | // pxsec : [1/m], | |||
| 19236 | // b) input | |||
| 19237 | // parameters[0] : continuum scale factor (CC) [1] | |||
| 19238 | // parameters[1] : line strength scale factor (CL) [1] | |||
| 19239 | // parameters[2] : line broadening scale factor (CW) [1] | |||
| 19240 | // f_grid : [Hz] | |||
| 19241 | // abs_p : [Pa] | |||
| 19242 | // abs_t : [K] | |||
| 19243 | // vmr : [1] | |||
| 19244 | // | |||
| 19245 | const int Nparam = 3; | |||
| 19246 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 19247 | { | |||
| 19248 | out3 << "Full model " << name << " is running with \n" | |||
| 19249 | << "user defined parameters according to model " << model << ".\n"; | |||
| 19250 | MPM87H2OAbsModel( pxsec, | |||
| 19251 | parameters[0], | |||
| 19252 | parameters[1], | |||
| 19253 | parameters[2], | |||
| 19254 | model, | |||
| 19255 | f_grid, | |||
| 19256 | abs_p, | |||
| 19257 | abs_t, | |||
| 19258 | vmr, | |||
| 19259 | verbosity ); | |||
| 19260 | } | |||
| 19261 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 19262 | { | |||
| 19263 | ostringstream os; | |||
| 19264 | os << "Full model " << name << " requires " << Nparam << " input\n" | |||
| 19265 | << "parameters for the model " << model << ",\n" | |||
| 19266 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 19267 | throw runtime_error(os.str()); | |||
| 19268 | } | |||
| 19269 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 19270 | { | |||
| 19271 | out3 << "Full model " << name << " running with \n" | |||
| 19272 | << "the parameters for model " << model << ".\n"; | |||
| 19273 | MPM87H2OAbsModel( pxsec, | |||
| 19274 | 0.00, | |||
| 19275 | 0.00, | |||
| 19276 | 0.00, | |||
| 19277 | model, | |||
| 19278 | f_grid, | |||
| 19279 | abs_p, | |||
| 19280 | abs_t, | |||
| 19281 | vmr, | |||
| 19282 | verbosity ); | |||
| 19283 | } | |||
| 19284 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 19285 | { | |||
| 19286 | ostringstream os; | |||
| 19287 | os << "ERROR: Full model " << name << " requires NO input\n" | |||
| 19288 | << "parameters for the model " << model << ",\n" | |||
| 19289 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 19290 | << "This ambiguity can not be solved by arts.\n" | |||
| 19291 | << "Please see the arts user guide chapter 3.\n"; | |||
| 19292 | throw runtime_error(os.str()); | |||
| 19293 | } | |||
| 19294 | } | |||
| 19295 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 19296 | else if ( "H2O-MPM89"==name ) | |||
| 19297 | { | |||
| 19298 | // | |||
| 19299 | // specific continuum parameters and units: | |||
| 19300 | // a) output | |||
| 19301 | // pxsec : [1/m], | |||
| 19302 | // b) input | |||
| 19303 | // parameters[0] : continuum scale factor (CC) [1] | |||
| 19304 | // parameters[1] : line strength scale factor (CL) [1] | |||
| 19305 | // parameters[2] : line broadening scale factor (CW [1] | |||
| 19306 | // f_grid : [Hz] | |||
| 19307 | // abs_p : [Pa] | |||
| 19308 | // abs_t : [K] | |||
| 19309 | // vmr : [1] | |||
| 19310 | // | |||
| 19311 | const int Nparam = 3; | |||
| 19312 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 19313 | { | |||
| 19314 | out3 << "Full model " << name << " is running with \n" | |||
| 19315 | << "user defined parameters according to model " << model << ".\n"; | |||
| 19316 | MPM89H2OAbsModel( pxsec, | |||
| 19317 | parameters[0], | |||
| 19318 | parameters[1], | |||
| 19319 | parameters[2], | |||
| 19320 | model, | |||
| 19321 | f_grid, | |||
| 19322 | abs_p, | |||
| 19323 | abs_t, | |||
| 19324 | vmr, | |||
| 19325 | verbosity ); | |||
| 19326 | } | |||
| 19327 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 19328 | { | |||
| 19329 | ostringstream os; | |||
| 19330 | os << "Full model " << name << " requires " << Nparam << " input\n" | |||
| 19331 | << "parameters for the model " << model << ",\n" | |||
| 19332 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 19333 | throw runtime_error(os.str()); | |||
| 19334 | } | |||
| 19335 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 19336 | { | |||
| 19337 | out3 << "Full model " << name << " running with \n" | |||
| 19338 | << "the parameters for model " << model << ".\n"; | |||
| 19339 | MPM89H2OAbsModel( pxsec, | |||
| 19340 | 0.00, | |||
| 19341 | 0.00, | |||
| 19342 | 0.00, | |||
| 19343 | model, | |||
| 19344 | f_grid, | |||
| 19345 | abs_p, | |||
| 19346 | abs_t, | |||
| 19347 | vmr, | |||
| 19348 | verbosity ); | |||
| 19349 | } | |||
| 19350 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 19351 | { | |||
| 19352 | ostringstream os; | |||
| 19353 | os << "ERROR: Full model " << name << " requires NO input\n" | |||
| 19354 | << "parameters for the model " << model << ",\n" | |||
| 19355 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 19356 | << "This ambiguity can not be solved by arts.\n" | |||
| 19357 | << "Please see the arts user guide chapter 3.\n"; | |||
| 19358 | throw runtime_error(os.str()); | |||
| 19359 | } | |||
| 19360 | } | |||
| 19361 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 19362 | else if ( "H2O-MPM93"==name ) | |||
| 19363 | { | |||
| 19364 | // | |||
| 19365 | // specific continuum parameters and units: | |||
| 19366 | // OUTPUT | |||
| 19367 | // pxsec : [1/m], | |||
| 19368 | // INPUT | |||
| 19369 | // parameters[0] : continuum scale factor (CC) [1] | |||
| 19370 | // parameters[1] : line strength scale factor (CL) [1] | |||
| 19371 | // parameters[2] : line broadening scale factor (CW) [1] | |||
| 19372 | // f_grid : [Hz] | |||
| 19373 | // abs_p : [Pa] | |||
| 19374 | // abs_t : [K] | |||
| 19375 | // vmr : [1] | |||
| 19376 | // | |||
| 19377 | const int Nparam = 3; | |||
| 19378 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 19379 | { | |||
| 19380 | out3 << "Full model " << name << " is running with \n" | |||
| 19381 | << "user defined parameters according to model " << model << ".\n"; | |||
| 19382 | MPM93H2OAbsModel( pxsec, | |||
| 19383 | parameters[0], | |||
| 19384 | parameters[1], | |||
| 19385 | parameters[2], | |||
| 19386 | model, | |||
| 19387 | f_grid, | |||
| 19388 | abs_p, | |||
| 19389 | abs_t, | |||
| 19390 | vmr, | |||
| 19391 | verbosity ); | |||
| 19392 | } | |||
| 19393 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 19394 | { | |||
| 19395 | ostringstream os; | |||
| 19396 | os << "Full model " << name << " requires " << Nparam << " input\n" | |||
| 19397 | << "parameters for the model " << model << ",\n" | |||
| 19398 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 19399 | throw runtime_error(os.str()); | |||
| 19400 | } | |||
| 19401 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 19402 | { | |||
| 19403 | out3 << "Full model " << name << " running with \n" | |||
| 19404 | << "the parameters for model " << model << ".\n"; | |||
| 19405 | MPM93H2OAbsModel( pxsec, | |||
| 19406 | 0.00, | |||
| 19407 | 0.00, | |||
| 19408 | 0.00, | |||
| 19409 | model, | |||
| 19410 | f_grid, | |||
| 19411 | abs_p, | |||
| 19412 | abs_t, | |||
| 19413 | vmr, | |||
| 19414 | verbosity ); | |||
| 19415 | } | |||
| 19416 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 19417 | { | |||
| 19418 | ostringstream os; | |||
| 19419 | os << "ERROR: Full model " << name << " requires NO input\n" | |||
| 19420 | << "parameters for the model " << model << ",\n" | |||
| 19421 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 19422 | << "This ambiguity can not be solved by arts.\n" | |||
| 19423 | << "Please see the arts user guide chapter 3.\n"; | |||
| 19424 | throw runtime_error(os.str()); | |||
| 19425 | } | |||
| 19426 | } | |||
| 19427 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 19428 | else if ( "H2O-PWR98"==name ) | |||
| 19429 | { | |||
| 19430 | // specific continuum parameters and units: | |||
| 19431 | // OUTPUT | |||
| 19432 | // pxsec : [1/m], | |||
| 19433 | // INPUT | |||
| 19434 | // parameters[0] : continuum scale factor (CC) [1] | |||
| 19435 | // parameters[1] : line strength scale factor (CL) [1] | |||
| 19436 | // parameters[2] : line broadening scale factor (CW) [1] | |||
| 19437 | // f_grid : [Hz] | |||
| 19438 | // abs_p : [Pa] | |||
| 19439 | // abs_t : [K] | |||
| 19440 | // vmr : [1] | |||
| 19441 | // | |||
| 19442 | const int Nparam = 3; | |||
| 19443 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 19444 | { | |||
| 19445 | out3 << "Full model " << name << " is running with \n" | |||
| 19446 | << "user defined parameters according to model " << model << ".\n"; | |||
| 19447 | PWR98H2OAbsModel( pxsec, | |||
| 19448 | parameters[0], | |||
| 19449 | parameters[1], | |||
| 19450 | parameters[2], | |||
| 19451 | model, | |||
| 19452 | f_grid, | |||
| 19453 | abs_p, | |||
| 19454 | abs_t, | |||
| 19455 | vmr, | |||
| 19456 | verbosity ); | |||
| 19457 | } | |||
| 19458 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 19459 | { | |||
| 19460 | ostringstream os; | |||
| 19461 | os << "Full model " << name << " requires " << Nparam << " input\n" | |||
| 19462 | << "parameters for the model " << model << ",\n" | |||
| 19463 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 19464 | throw runtime_error(os.str()); | |||
| 19465 | } | |||
| 19466 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 19467 | { | |||
| 19468 | out3 << "Full model " << name << " running with \n" | |||
| 19469 | << "the parameters for model " << model << ".\n"; | |||
| 19470 | PWR98H2OAbsModel( pxsec, | |||
| 19471 | 0.00, | |||
| 19472 | 0.00, | |||
| 19473 | 0.00, | |||
| 19474 | model, | |||
| 19475 | f_grid, | |||
| 19476 | abs_p, | |||
| 19477 | abs_t, | |||
| 19478 | vmr, | |||
| 19479 | verbosity ); | |||
| 19480 | } | |||
| 19481 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 19482 | { | |||
| 19483 | ostringstream os; | |||
| 19484 | os << "ERROR: Full model " << name << " requires NO input\n" | |||
| 19485 | << "parameters for the model " << model << ",\n" | |||
| 19486 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 19487 | << "This ambiguity can not be solved by arts.\n" | |||
| 19488 | << "Please see the arts user guide chapter 3.\n"; | |||
| 19489 | throw runtime_error(os.str()); | |||
| 19490 | } | |||
| 19491 | } | |||
| 19492 | // ============= O2 continuum ========================================================= | |||
| 19493 | else if ( "O2-CIAfunCKDMT100"==name ) | |||
| 19494 | { | |||
| 19495 | // Model reference: | |||
| 19496 | // F. Thibault, V. Menoux, R. Le Doucen, L. Rosenman, | |||
| 19497 | // J.-M. Hartmann, Ch. Boulet, | |||
| 19498 | // "Infrared collision-induced absorption by O2 near 6.4 microns for | |||
| 19499 | // atmospheric applications: measurements and emprirical modeling", | |||
| 19500 | // Appl. Optics, 35, 5911-5917, (1996). | |||
| 19501 | // | |||
| 19502 | // specific continuum parameters and units: | |||
| 19503 | // OUTPUT | |||
| 19504 | // pxsec : [1/m], | |||
| 19505 | // INPUT | |||
| 19506 | // parameters[0] : continuum scaling | |||
| 19507 | // model : model option ("CKD" or "user") | |||
| 19508 | // f_grid : [Hz] | |||
| 19509 | // abs_p : [Pa] | |||
| 19510 | // abs_t : [K] | |||
| 19511 | // vmr : [1] | |||
| 19512 | // | |||
| 19513 | const int Nparam = 1; | |||
| 19514 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 19515 | { | |||
| 19516 | out3 << "Continuum model " << name << " is running with \n" | |||
| 19517 | << "user defined parameters according to model " << model << ".\n"; | |||
| 19518 | CKD_mt_CIAfun_o2( pxsec, | |||
| 19519 | parameters[0], | |||
| 19520 | model, | |||
| 19521 | f_grid, | |||
| 19522 | abs_p, | |||
| 19523 | abs_t, | |||
| 19524 | vmr, | |||
| 19525 | verbosity ); | |||
| 19526 | } | |||
| 19527 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 19528 | { | |||
| 19529 | ostringstream os; | |||
| 19530 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 19531 | << "parameters for the model " << model << ",\n" | |||
| 19532 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 19533 | throw runtime_error(os.str()); | |||
| 19534 | } | |||
| 19535 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 19536 | { | |||
| 19537 | out3 << "Continuum model " << name << " running with \n" | |||
| 19538 | << "the parameters for model " << model << ".\n"; | |||
| 19539 | CKD_mt_CIAfun_o2( pxsec, | |||
| 19540 | 0.00e0, | |||
| 19541 | model, | |||
| 19542 | f_grid, | |||
| 19543 | abs_p, | |||
| 19544 | abs_t, | |||
| 19545 | vmr, | |||
| 19546 | verbosity ); | |||
| 19547 | } | |||
| 19548 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 19549 | { | |||
| 19550 | ostringstream os; | |||
| 19551 | os << "ERROR: Continuum model " << name << " requires NO input\n" | |||
| 19552 | << "parameters for the model " << model << ",\n" | |||
| 19553 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 19554 | << "This ambiguity can not be solved by arts.\n" | |||
| 19555 | << "Please see the arts user guide chapter 3.\n"; | |||
| 19556 | throw runtime_error(os.str()); | |||
| 19557 | } | |||
| 19558 | } | |||
| 19559 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 19560 | else if ( "O2-v0v0CKDMT100"==name ) | |||
| 19561 | { | |||
| 19562 | // Model reference: | |||
| 19563 | // B. Mate, C. Lugez, G.T. Fraser, W.J. Lafferty, | |||
| 19564 | // "Absolute Intensities for the O2 1.27 micron | |||
| 19565 | // continuum absorption", | |||
| 19566 | // J. Geophys. Res., 104, 30,585-30,590, 1999. | |||
| 19567 | // | |||
| 19568 | // specific continuum parameters and units: | |||
| 19569 | // OUTPUT | |||
| 19570 | // pxsec : [1/m], | |||
| 19571 | // INPUT | |||
| 19572 | // parameters[0] : continuum scaling | |||
| 19573 | // model : model option ("CKD" or "user") | |||
| 19574 | // f_grid : [Hz] | |||
| 19575 | // abs_p : [Pa] | |||
| 19576 | // abs_t : [K] | |||
| 19577 | // vmr : [1] | |||
| 19578 | // abs_n2 : [1] | |||
| 19579 | // | |||
| 19580 | ||||
| 19581 | if( abs_n2.sum() < -1. ) | |||
| 19582 | { | |||
| 19583 | ostringstream os; | |||
| 19584 | os << "Continuum/full model tag " << name | |||
| 19585 | << " requires N2-vmr, but no tag group contains N2!"; | |||
| 19586 | throw runtime_error(os.str()); | |||
| 19587 | } | |||
| 19588 | ||||
| 19589 | const int Nparam = 1; | |||
| 19590 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 19591 | { | |||
| 19592 | out3 << "Continuum model " << name << " is running with \n" | |||
| 19593 | << "user defined parameters according to model " << model << ".\n"; | |||
| 19594 | CKD_mt_v0v0_o2( pxsec, | |||
| 19595 | parameters[0], | |||
| 19596 | model, | |||
| 19597 | f_grid, | |||
| 19598 | abs_p, | |||
| 19599 | abs_t, | |||
| 19600 | vmr, | |||
| 19601 | abs_n2, | |||
| 19602 | verbosity ); | |||
| 19603 | } | |||
| 19604 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 19605 | { | |||
| 19606 | ostringstream os; | |||
| 19607 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 19608 | << "parameters for the model " << model << ",\n" | |||
| 19609 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 19610 | throw runtime_error(os.str()); | |||
| 19611 | } | |||
| 19612 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 19613 | { | |||
| 19614 | out3 << "Continuum model " << name << " running with \n" | |||
| 19615 | << "the parameters for model " << model << ".\n"; | |||
| 19616 | CKD_mt_v0v0_o2( pxsec, | |||
| 19617 | 0.0e0, | |||
| 19618 | model, | |||
| 19619 | f_grid, | |||
| 19620 | abs_p, | |||
| 19621 | abs_t, | |||
| 19622 | vmr, | |||
| 19623 | abs_n2, | |||
| 19624 | verbosity ); | |||
| 19625 | } | |||
| 19626 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 19627 | { | |||
| 19628 | ostringstream os; | |||
| 19629 | os << "ERROR: Continuum model " << name << " requires NO input\n" | |||
| 19630 | << "parameters for the model " << model << ",\n" | |||
| 19631 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 19632 | << "This ambiguity can not be solved by arts.\n" | |||
| 19633 | << "Please see the arts user guide chapter 3.\n"; | |||
| 19634 | throw runtime_error(os.str()); | |||
| 19635 | } | |||
| 19636 | } | |||
| 19637 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 19638 | else if ( "O2-v1v0CKDMT100"==name ) | |||
| 19639 | { | |||
| 19640 | // Model reference: | |||
| 19641 | // Mlawer, Clough, Brown, Stephen, Landry, Goldman, Murcray, | |||
| 19642 | // "Observed Atmospheric Collision Induced Absorption in Near Infrared Oxygen Bands", | |||
| 19643 | // Journal of Geophysical Research, vol 103, no. D4, pp. 3859-3863, 1998. | |||
| 19644 | // | |||
| 19645 | // specific continuum parameters and units: | |||
| 19646 | // OUTPUT | |||
| 19647 | // pxsec : [1/m], | |||
| 19648 | // INPUT | |||
| 19649 | // parameters[0] : continuum scaling | |||
| 19650 | // model : model option ("CKD" or "user") | |||
| 19651 | // f_grid : [Hz] | |||
| 19652 | // abs_p : [Pa] | |||
| 19653 | // abs_t : [K] | |||
| 19654 | // vmr : [1] | |||
| 19655 | // | |||
| 19656 | const int Nparam = 1; | |||
| 19657 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 19658 | { | |||
| 19659 | out3 << "Continuum model " << name << " is running with \n" | |||
| 19660 | << "user defined parameters according to model " << model << ".\n"; | |||
| 19661 | CKD_mt_v1v0_o2( pxsec, | |||
| 19662 | parameters[0], | |||
| 19663 | model, | |||
| 19664 | f_grid, | |||
| 19665 | abs_p, | |||
| 19666 | abs_t, | |||
| 19667 | vmr, | |||
| 19668 | verbosity ); | |||
| 19669 | } | |||
| 19670 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 19671 | { | |||
| 19672 | ostringstream os; | |||
| 19673 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 19674 | << "parameters for the model " << model << ",\n" | |||
| 19675 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 19676 | throw runtime_error(os.str()); | |||
| 19677 | } | |||
| 19678 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 19679 | { | |||
| 19680 | out3 << "Continuum model " << name << " running with \n" | |||
| 19681 | << "the parameters for model " << model << ".\n"; | |||
| 19682 | CKD_mt_v1v0_o2( pxsec, | |||
| 19683 | 0.0e0, | |||
| 19684 | model, | |||
| 19685 | f_grid, | |||
| 19686 | abs_p, | |||
| 19687 | abs_t, | |||
| 19688 | vmr, | |||
| 19689 | verbosity ); | |||
| 19690 | } | |||
| 19691 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 19692 | { | |||
| 19693 | ostringstream os; | |||
| 19694 | os << "ERROR: Continuum model " << name << " requires NO input\n" | |||
| 19695 | << "parameters for the model " << model << ",\n" | |||
| 19696 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 19697 | << "This ambiguity can not be solved by arts.\n" | |||
| 19698 | << "Please see the ARTS User Guide.\n"; | |||
| 19699 | throw runtime_error(os.str()); | |||
| 19700 | } | |||
| 19701 | } | |||
| 19702 | ||||
| 19703 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 19704 | else if ( "O2-visCKDMT252"==name ) | |||
| 19705 | { | |||
| 19706 | // Model reference: | |||
| 19707 | // O2 continuum formulated by Greenblatt et al. over the spectral region | |||
| 19708 | // 8797-29870 cm-1: "Absorption Coefficients of Oxygen Between | |||
| 19709 | // 330 and 1140 nm, G.D. Green blatt, J.J. Orlando, J.B. Burkholder, | |||
| 19710 | // and A.R. Ravishabkara, J. Geophys. Res., 95, 18577-18582, 1990. | |||
| 19711 | // | |||
| 19712 | // specific continuum parameters and units: | |||
| 19713 | // OUTPUT | |||
| 19714 | // pxsec : [1/m], | |||
| 19715 | // INPUT | |||
| 19716 | // parameters[0] : continuum scaling | |||
| 19717 | // model : model option ("CKD" or "user") | |||
| 19718 | // f_grid : [Hz] | |||
| 19719 | // abs_p : [Pa] | |||
| 19720 | // abs_t : [K] | |||
| 19721 | // vmr : [1] | |||
| 19722 | // | |||
| 19723 | const int Nparam = 1; | |||
| 19724 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 19725 | { | |||
| 19726 | out3 << "Continuum model " << name << " is running with \n" | |||
| 19727 | << "user defined parameters according to model " << model << ".\n"; | |||
| 19728 | CKD_mt_250_o2_vis( pxsec, | |||
| 19729 | parameters[0], | |||
| 19730 | model, | |||
| 19731 | f_grid, | |||
| 19732 | abs_p, | |||
| 19733 | abs_t, | |||
| 19734 | vmr, | |||
| 19735 | verbosity ); | |||
| 19736 | } | |||
| 19737 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 19738 | { | |||
| 19739 | ostringstream os; | |||
| 19740 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 19741 | << "parameters for the model " << model << ",\n" | |||
| 19742 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 19743 | throw runtime_error(os.str()); | |||
| 19744 | } | |||
| 19745 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 19746 | { | |||
| 19747 | out3 << "Continuum model " << name << " running with \n" | |||
| 19748 | << "the parameters for model " << model << ".\n"; | |||
| 19749 | CKD_mt_250_o2_vis( pxsec, | |||
| 19750 | 0.0e0, | |||
| 19751 | model, | |||
| 19752 | f_grid, | |||
| 19753 | abs_p, | |||
| 19754 | abs_t, | |||
| 19755 | vmr, | |||
| 19756 | verbosity ); | |||
| 19757 | } | |||
| 19758 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 19759 | { | |||
| 19760 | ostringstream os; | |||
| 19761 | os << "ERROR: Continuum model " << name << " requires NO input\n" | |||
| 19762 | << "parameters for the model " << model << ",\n" | |||
| 19763 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 19764 | << "This ambiguity can not be solved by arts.\n" | |||
| 19765 | << "Please see the arts user guide chapter 3.\n"; | |||
| 19766 | throw runtime_error(os.str()); | |||
| 19767 | } | |||
| 19768 | } | |||
| 19769 | ||||
| 19770 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 19771 | ||||
| 19772 | else if ( "O2-SelfContStandardType"==name ) | |||
| 19773 | { | |||
| 19774 | // MPM93, Rosenkranz 1993 O2 continuum: | |||
| 19775 | // see publication side of National Telecommunications and Information Administration | |||
| 19776 | // http://www.its.bldrdoc.gov/pub/all_pubs/all_pubs.html | |||
| 19777 | // and ftp side for downloading the MPM93 original source code: | |||
| 19778 | // ftp://ftp.its.bldrdoc.gov/pub/mpm93/ | |||
| 19779 | // | |||
| 19780 | // P. W. Rosenkranz Chapter 2, pp 74, in M. A. Janssen, | |||
| 19781 | // "Atmospheric Remote Sensing by Microwave Radiometry", | |||
| 19782 | // John Wiley & Sons, Inc., 1993, ISBN 0-471-62891-3 | |||
| 19783 | // (see also JQSRT, Vol.48, No.5/6 pp.629-643, 1992) | |||
| 19784 | // | |||
| 19785 | // specific continuum parameters and units: | |||
| 19786 | // OUTPUT | |||
| 19787 | // pxsec : [1/m], | |||
| 19788 | // INPUT | |||
| 19789 | // parameters[0] : continuum coefficient (C) [1/m*1/Hz*1/Pa] | |||
| 19790 | // parameters[1] : frequency coefficient (G0) [Hz/Pa] | |||
| 19791 | // parameters[3] : line width parameter (G0A) [1] | |||
| 19792 | // parameters[3] : line width parameter (G0B) [1] | |||
| 19793 | // parameters[2] : temperature exponent (XG0d) [1] | |||
| 19794 | // parameters[2] : temperature exponent (x_s) [1] | |||
| 19795 | // parameters[5] : continuum coefficient (XG0w) [1] | |||
| 19796 | // model : model option ("MPM93", "Rosenkranz", or "user") | |||
| 19797 | // f_grid : [Hz] | |||
| 19798 | // abs_p : [Pa] | |||
| 19799 | // abs_t : [K] | |||
| 19800 | // abs_h2o : [1] | |||
| 19801 | // vmr : [1] | |||
| 19802 | // | |||
| 19803 | ||||
| 19804 | if( abs_h2o.sum() < -1. ) | |||
| 19805 | { | |||
| 19806 | ostringstream os; | |||
| 19807 | os << "Continuum/full model tag " << name | |||
| 19808 | << " requires H2O-vmr, but no tag group contains H2O!"; | |||
| 19809 | throw runtime_error(os.str()); | |||
| 19810 | } | |||
| 19811 | ||||
| 19812 | const int Nparam = 6; | |||
| 19813 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 19814 | { | |||
| 19815 | out3 << "Continuum model " << name << " is running with \n" | |||
| 19816 | << "user defined parameters according to model " << model << ".\n"; | |||
| 19817 | Standard_O2_continuum( pxsec, | |||
| 19818 | parameters[0], | |||
| 19819 | parameters[1], | |||
| 19820 | parameters[2], | |||
| 19821 | parameters[3], | |||
| 19822 | parameters[4], | |||
| 19823 | parameters[5], | |||
| 19824 | model, | |||
| 19825 | f_grid, | |||
| 19826 | abs_p, | |||
| 19827 | abs_t, | |||
| 19828 | abs_h2o, | |||
| 19829 | vmr, | |||
| 19830 | verbosity ); | |||
| 19831 | } | |||
| 19832 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 19833 | { | |||
| 19834 | ostringstream os; | |||
| 19835 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 19836 | << "parameters for the model " << model << ",\n" | |||
| 19837 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 19838 | throw runtime_error(os.str()); | |||
| 19839 | } | |||
| 19840 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 19841 | { | |||
| 19842 | out3 << "Continuum model " << name << " running with \n" | |||
| 19843 | << "the parameters for model " << model << ".\n"; | |||
| 19844 | Standard_O2_continuum( pxsec, | |||
| 19845 | 0.00, | |||
| 19846 | 0.00, | |||
| 19847 | 0.00, | |||
| 19848 | 0.00, | |||
| 19849 | 0.00, | |||
| 19850 | 0.00, | |||
| 19851 | model, | |||
| 19852 | f_grid, | |||
| 19853 | abs_p, | |||
| 19854 | abs_t, | |||
| 19855 | abs_h2o, | |||
| 19856 | vmr, | |||
| 19857 | verbosity ); | |||
| 19858 | } | |||
| 19859 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 19860 | { | |||
| 19861 | ostringstream os; | |||
| 19862 | os << "ERROR: Continuum model " << name << " requires NO input\n" | |||
| 19863 | << "parameters for the model " << model << ",\n" | |||
| 19864 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 19865 | << "This ambiguity can not be solved by arts.\n" | |||
| 19866 | << "Please see the arts user guide chapter 3.\n"; | |||
| 19867 | throw runtime_error(os.str()); | |||
| 19868 | } | |||
| 19869 | } | |||
| 19870 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 19871 | else if ( "O2-SelfContMPM93"==name ) | |||
| 19872 | { | |||
| 19873 | // MPM93 O2 continuum: | |||
| 19874 | // see publication side of National Telecommunications and Information Administration | |||
| 19875 | // http://www.its.bldrdoc.gov/pub/all_pubs/all_pubs.html | |||
| 19876 | // and ftp side for downloading the MPM93 original source code: | |||
| 19877 | // ftp://ftp.its.bldrdoc.gov/pub/mpm93/ | |||
| 19878 | ||||
| 19879 | // | |||
| 19880 | // specific continuum parameters and units: | |||
| 19881 | // OUTPUT | |||
| 19882 | // pxsec : [1/m], | |||
| 19883 | // INPUT | |||
| 19884 | // parameters[0] : continuum coefficient (C) [1/m / (Hz²*Pa²)] | |||
| 19885 | // parameters[1] : temperature exponent (x_s) [1] | |||
| 19886 | // f_grid : [Hz] | |||
| 19887 | // abs_p : [Pa] | |||
| 19888 | // abs_t : [K] | |||
| 19889 | // abs_h2o : [1] | |||
| 19890 | // vmr : [1] | |||
| 19891 | // | |||
| 19892 | ||||
| 19893 | if( abs_h2o.sum() < -1. ) | |||
| 19894 | { | |||
| 19895 | ostringstream os; | |||
| 19896 | os << "Continuum/full model tag " << name | |||
| 19897 | << " requires H2O-vmr, but no tag group contains H2O!"; | |||
| 19898 | throw runtime_error(os.str()); | |||
| 19899 | } | |||
| 19900 | ||||
| 19901 | const int Nparam = 4; | |||
| 19902 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 19903 | { | |||
| 19904 | out3 << "Continuum model " << name << " is running with \n" | |||
| 19905 | << "user defined parameters according to model " << model << ".\n"; | |||
| 19906 | MPM93_O2_continuum( pxsec, | |||
| 19907 | parameters[0], | |||
| 19908 | parameters[1], | |||
| 19909 | parameters[2], | |||
| 19910 | parameters[3], | |||
| 19911 | model, | |||
| 19912 | f_grid, | |||
| 19913 | abs_p, | |||
| 19914 | abs_t, | |||
| 19915 | abs_h2o, | |||
| 19916 | vmr, | |||
| 19917 | verbosity ); | |||
| 19918 | } | |||
| 19919 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 19920 | { | |||
| 19921 | ostringstream os; | |||
| 19922 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 19923 | << "parameters for the model " << model << ",\n" | |||
| 19924 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 19925 | throw runtime_error(os.str()); | |||
| 19926 | } | |||
| 19927 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 19928 | { | |||
| 19929 | out3 << "Continuum model " << name << " running with \n" | |||
| 19930 | << "the parameters for model " << model << ".\n"; | |||
| 19931 | MPM93_O2_continuum( pxsec, | |||
| 19932 | 0.00, | |||
| 19933 | 0.00, | |||
| 19934 | 0.00, | |||
| 19935 | 0.00, | |||
| 19936 | model, | |||
| 19937 | f_grid, | |||
| 19938 | abs_p, | |||
| 19939 | abs_t, | |||
| 19940 | abs_h2o, | |||
| 19941 | vmr, | |||
| 19942 | verbosity ); | |||
| 19943 | } | |||
| 19944 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 19945 | { | |||
| 19946 | ostringstream os; | |||
| 19947 | os << "ERROR: Continuum model " << name << " requires NO input\n" | |||
| 19948 | << "parameters for the model " << model << ",\n" | |||
| 19949 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 19950 | << "This ambiguity can not be solved by arts.\n" | |||
| 19951 | << "Please see the arts user guide chapter 3.\n"; | |||
| 19952 | throw runtime_error(os.str()); | |||
| 19953 | } | |||
| 19954 | } | |||
| 19955 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 19956 | else if ( "O2-SelfContPWR93"==name ) | |||
| 19957 | { | |||
| 19958 | // data information about this continuum: | |||
| 19959 | // P. W. Rosenkranz Chapter 2, pp 74, in M. A. Janssen, | |||
| 19960 | // "Atmospheric Remote Sensing by Microwave Radiometry", | |||
| 19961 | // John Wiley & Sons, Inc., 1993, ISBN 0-471-62891-3 | |||
| 19962 | // (see also JQSRT, Vol.48, No.5/6 pp.629-643, 1992) | |||
| 19963 | // | |||
| 19964 | // specific continuum parameters and units: | |||
| 19965 | // OUTPUT | |||
| 19966 | // pxsec : [1/m], | |||
| 19967 | // INPUT | |||
| 19968 | // parameters[0] : continuum coefficient (C) [K²/(Hz*Pa*m)] | |||
| 19969 | // parameters[1] : temperature exponent (x) [1] | |||
| 19970 | // f_grid : [Hz] | |||
| 19971 | // abs_p : [Pa] | |||
| 19972 | // abs_t : [K] | |||
| 19973 | // vmr : [1] | |||
| 19974 | // | |||
| 19975 | ||||
| 19976 | if( abs_h2o.sum() < -1. ) | |||
| 19977 | { | |||
| 19978 | ostringstream os; | |||
| 19979 | os << "Continuum/full model tag " << name | |||
| 19980 | << " requires H2O-vmr, but no tag group contains H2O!"; | |||
| 19981 | throw runtime_error(os.str()); | |||
| 19982 | } | |||
| 19983 | ||||
| 19984 | const int Nparam = 4; | |||
| 19985 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 19986 | { | |||
| 19987 | out3 << "Continuum model " << name << " is running with \n" | |||
| 19988 | << "user defined parameters according to model " << model << ".\n"; | |||
| 19989 | Rosenkranz_O2_continuum( pxsec, | |||
| 19990 | parameters[0], | |||
| 19991 | parameters[1], | |||
| 19992 | parameters[2], | |||
| 19993 | parameters[3], | |||
| 19994 | model, | |||
| 19995 | f_grid, | |||
| 19996 | abs_p, | |||
| 19997 | abs_t, | |||
| 19998 | abs_h2o, | |||
| 19999 | vmr, | |||
| 20000 | verbosity ); | |||
| 20001 | } | |||
| 20002 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 20003 | { | |||
| 20004 | ostringstream os; | |||
| 20005 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 20006 | << "parameters for the model " << model << ",\n" | |||
| 20007 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 20008 | throw runtime_error(os.str()); | |||
| 20009 | } | |||
| 20010 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 20011 | { | |||
| 20012 | out3 << "Continuum model " << name << " running with \n" | |||
| 20013 | << "the parameters for model " << model << ".\n"; | |||
| 20014 | Rosenkranz_O2_continuum( pxsec, | |||
| 20015 | 0.00, | |||
| 20016 | 0.00, | |||
| 20017 | 0.00, | |||
| 20018 | 0.00, | |||
| 20019 | model, | |||
| 20020 | f_grid, | |||
| 20021 | abs_p, | |||
| 20022 | abs_t, | |||
| 20023 | abs_h2o, | |||
| 20024 | vmr, | |||
| 20025 | verbosity ); | |||
| 20026 | } | |||
| 20027 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 20028 | { | |||
| 20029 | ostringstream os; | |||
| 20030 | os << "ERROR: Continuum model " << name << " requires NO input\n" | |||
| 20031 | << "parameters for the model " << model << ",\n" | |||
| 20032 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 20033 | << "This ambiguity can not be solved by arts.\n" | |||
| 20034 | << "Please see the arts user guide chapter 3.\n"; | |||
| 20035 | throw runtime_error(os.str()); | |||
| 20036 | } | |||
| 20037 | } | |||
| 20038 | // ============= O2 full model ======================================================== | |||
| 20039 | else if ( "O2-PWR88"==name ) | |||
| 20040 | { | |||
| 20041 | // REFERENCE FOR EQUATIONS AND COEFFICIENTS: | |||
| 20042 | // P.W. ROSENKRANZ, CHAP. 2 AND APPENDIX, IN ATMOSPHERIC REMOTE SENSING | |||
| 20043 | // BY MICROWAVE RADIOMETRY (M.A. JANSSEN, ED. 1993) | |||
| 20044 | // AND | |||
| 20045 | // H.J. LIEBE ET AL, JQSRT V.48, PP.629-643 (1992) | |||
| 20046 | // (EXCEPT: SUBMILLIMETER LINE INTENSITIES FROM HITRAN92) | |||
| 20047 | // AND | |||
| 20048 | // P. W. ROSENKRANZ, INTERFERENCE COEFFICIENTS FOR THE | |||
| 20049 | // OVERLAPPING OXYGEN LINES IN AIR, JQSRT, 1988, VOLUME 39, 287-297. | |||
| 20050 | // | |||
| 20051 | // the only difference to the 1993 version is the line mixing | |||
| 20052 | // parameter Y, which is taken from the above reference JQSRT, 1988. | |||
| 20053 | // | |||
| 20054 | // specific continuum parameters and units: | |||
| 20055 | // OUTPUT | |||
| 20056 | // pxsec : [1/m], | |||
| 20057 | // INPUT | |||
| 20058 | // parameters[0] : continuum term scale factor, default CC = 1.000 [1] | |||
| 20059 | // parameters[1] : line strength scale factor, default CL = 1.000 [1] | |||
| 20060 | // parameters[1] : line broadening scale factor, default CW = 1.000 [1] | |||
| 20061 | // parameters[1] : line coupling scale factor, default CO = 1.000 [1] | |||
| 20062 | // f_grid : [Hz] | |||
| 20063 | // abs_p : [Pa] | |||
| 20064 | // abs_t : [K] | |||
| 20065 | // abs_h2o, : [1] | |||
| 20066 | // vmr : [1] | |||
| 20067 | // | |||
| 20068 | ||||
| 20069 | if( abs_h2o.sum() < -1. ) | |||
| 20070 | { | |||
| 20071 | ostringstream os; | |||
| 20072 | os << "Continuum/full model tag " << name | |||
| 20073 | << " requires H2O-vmr, but no tag group contains H2O!"; | |||
| 20074 | throw runtime_error(os.str()); | |||
| 20075 | } | |||
| 20076 | ||||
| 20077 | const int Nparam = 4; | |||
| 20078 | const char *version="PWR88"; | |||
| 20079 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 20080 | { | |||
| 20081 | out3 << "Full model " << name << " is running with \n" | |||
| 20082 | << "user defined parameters according to model " << model << ".\n"; | |||
| 20083 | PWR93O2AbsModel( pxsec, | |||
| 20084 | parameters[0], // continuum term scale factor | |||
| 20085 | parameters[1], // line strength scale factor | |||
| 20086 | parameters[2], // line broadening scale factor | |||
| 20087 | parameters[3], // line coupling scale factor | |||
| 20088 | model, | |||
| 20089 | version, | |||
| 20090 | f_grid, | |||
| 20091 | abs_p, | |||
| 20092 | abs_t, | |||
| 20093 | abs_h2o, | |||
| 20094 | vmr, | |||
| 20095 | verbosity ); | |||
| 20096 | } | |||
| 20097 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 20098 | { | |||
| 20099 | ostringstream os; | |||
| 20100 | os << "Full model " << name << " requires " << Nparam << " input\n" | |||
| 20101 | << "parameters for the model " << model << ",\n" | |||
| 20102 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 20103 | throw runtime_error(os.str()); | |||
| 20104 | } | |||
| 20105 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 20106 | { | |||
| 20107 | out3 << "Full model " << name << " running with \n" | |||
| 20108 | << "the parameters for model " << model << ".\n"; | |||
| 20109 | PWR93O2AbsModel( pxsec, | |||
| 20110 | 0.00, | |||
| 20111 | 0.00, | |||
| 20112 | 0.00, | |||
| 20113 | 0.00, | |||
| 20114 | model, | |||
| 20115 | version, | |||
| 20116 | f_grid, | |||
| 20117 | abs_p, | |||
| 20118 | abs_t, | |||
| 20119 | abs_h2o, | |||
| 20120 | vmr, | |||
| 20121 | verbosity ); | |||
| 20122 | } | |||
| 20123 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 20124 | { | |||
| 20125 | ostringstream os; | |||
| 20126 | os << "ERROR: Full model " << name << " requires NO input\n" | |||
| 20127 | << "parameters for the model " << model << ",\n" | |||
| 20128 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 20129 | << "This ambiguity can not be solved by arts.\n" | |||
| 20130 | << "Please see the arts user guide chapter 3.\n"; | |||
| 20131 | throw runtime_error(os.str()); | |||
| 20132 | } | |||
| 20133 | } | |||
| 20134 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 20135 | else if ( "O2-PWR93"==name ) | |||
| 20136 | { | |||
| 20137 | // REFERENCE FOR EQUATIONS AND COEFFICIENTS: | |||
| 20138 | // P.W. ROSENKRANZ, CHAP. 2 AND APPENDIX, IN ATMOSPHERIC REMOTE SENSING | |||
| 20139 | // BY MICROWAVE RADIOMETRY (M.A. JANSSEN, ED. 1993) | |||
| 20140 | // AND H.J. LIEBE ET AL, JQSRT V.48, PP.629-643 (1992) | |||
| 20141 | // (EXCEPT: SUBMILLIMETER LINE INTENSITIES FROM HITRAN92) | |||
| 20142 | // | |||
| 20143 | // specific continuum parameters and units: | |||
| 20144 | // OUTPUT | |||
| 20145 | // pxsec : [1/m], | |||
| 20146 | // INPUT | |||
| 20147 | // parameters[0] : continuum term scale factor, default CC = 1.000 [1] | |||
| 20148 | // parameters[1] : line strength scale factor, default CL = 1.000 [1] | |||
| 20149 | // parameters[1] : line broadening scale factor, default CW = 1.000 [1] | |||
| 20150 | // parameters[1] : line coupling scale factor, default CO = 1.000 [1] | |||
| 20151 | // f_grid : [Hz] | |||
| 20152 | // abs_p : [Pa] | |||
| 20153 | // abs_t : [K] | |||
| 20154 | // abs_h2o, : [1] | |||
| 20155 | // vmr : [1] | |||
| 20156 | // | |||
| 20157 | ||||
| 20158 | if( abs_h2o.sum() < -1. ) | |||
| 20159 | { | |||
| 20160 | ostringstream os; | |||
| 20161 | os << "Continuum/full model tag " << name | |||
| 20162 | << " requires H2O-vmr, but no tag group contains H2O!"; | |||
| 20163 | throw runtime_error(os.str()); | |||
| 20164 | } | |||
| 20165 | ||||
| 20166 | const int Nparam = 4; | |||
| 20167 | const char *version="PWR93"; | |||
| 20168 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 20169 | { | |||
| 20170 | out3 << "Full model " << name << " is running with \n" | |||
| 20171 | << "user defined parameters according to model " << model << ".\n"; | |||
| 20172 | PWR93O2AbsModel( pxsec, | |||
| 20173 | parameters[0], // continuum term scale factor | |||
| 20174 | parameters[1], // line strength scale factor | |||
| 20175 | parameters[2], // line broadening scale factor | |||
| 20176 | parameters[3], // line coupling scale factor | |||
| 20177 | model, | |||
| 20178 | version, | |||
| 20179 | f_grid, | |||
| 20180 | abs_p, | |||
| 20181 | abs_t, | |||
| 20182 | abs_h2o, | |||
| 20183 | vmr, | |||
| 20184 | verbosity ); | |||
| 20185 | } | |||
| 20186 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 20187 | { | |||
| 20188 | ostringstream os; | |||
| 20189 | os << "Full model " << name << " requires " << Nparam << " input\n" | |||
| 20190 | << "parameters for the model " << model << ",\n" | |||
| 20191 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 20192 | throw runtime_error(os.str()); | |||
| 20193 | } | |||
| 20194 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 20195 | { | |||
| 20196 | out3 << "Full model " << name << " running with \n" | |||
| 20197 | << "the parameters for model " << model << ".\n"; | |||
| 20198 | PWR93O2AbsModel( pxsec, | |||
| 20199 | 0.00, | |||
| 20200 | 0.00, | |||
| 20201 | 0.00, | |||
| 20202 | 0.00, | |||
| 20203 | model, | |||
| 20204 | version, | |||
| 20205 | f_grid, | |||
| 20206 | abs_p, | |||
| 20207 | abs_t, | |||
| 20208 | abs_h2o, | |||
| 20209 | vmr, | |||
| 20210 | verbosity ); | |||
| 20211 | } | |||
| 20212 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 20213 | { | |||
| 20214 | ostringstream os; | |||
| 20215 | os << "ERROR: Full model " << name << " requires NO input\n" | |||
| 20216 | << "parameters for the model " << model << ",\n" | |||
| 20217 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 20218 | << "This ambiguity can not be solved by arts.\n" | |||
| 20219 | << "Please see the arts user guide chapter 3.\n"; | |||
| 20220 | throw runtime_error(os.str()); | |||
| 20221 | } | |||
| 20222 | } | |||
| 20223 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 20224 | else if ( "O2-PWR98"==name ) | |||
| 20225 | { | |||
| 20226 | // REFERENCES FOR EQUATIONS AND COEFFICIENTS: | |||
| 20227 | // P.W. Rosenkranz, CHAP. 2 and appendix, in ATMOSPHERIC REMOTE SENSING | |||
| 20228 | // BY MICROWAVE RADIOMETRY (M.A. Janssen, ed., 1993). | |||
| 20229 | // H.J. Liebe et al, JQSRT V.48, PP.629-643 (1992). | |||
| 20230 | // M.J. Schwartz, Ph.D. thesis, M.I.T. (1997). | |||
| 20231 | // SUBMILLIMETER LINE INTENSITIES FROM HITRAN96. | |||
| 20232 | // This version differs from Liebe's MPM92 in two significant respects: | |||
| 20233 | // 1. It uses the modification of the 1- line width temperature dependence | |||
| 20234 | // recommended by Schwartz: (1/T). | |||
| 20235 | // 2. It uses the same temperature dependence (X) for submillimeter | |||
| 20236 | // line widths as in the 60 GHz band: (1/T)**0.8 | |||
| 20237 | // | |||
| 20238 | // specific continuum parameters and units: | |||
| 20239 | // OUTPUT | |||
| 20240 | // pxsec : [1/m], | |||
| 20241 | // INPUT | |||
| 20242 | // parameters[0] : continuum term scale factor, default CC = 1.000 [1] | |||
| 20243 | // parameters[1] : line strength scale factor, default CL = 1.000 [1] | |||
| 20244 | // parameters[1] : line broadening scale factor, default CW = 1.000 [1] | |||
| 20245 | // parameters[1] : line coupling scale factor, default CO = 1.000 [1] | |||
| 20246 | // f_grid : [Hz] | |||
| 20247 | // abs_p : [Pa] | |||
| 20248 | // abs_t : [K] | |||
| 20249 | // abs_h2o, : [1] | |||
| 20250 | // vmr : [1] | |||
| 20251 | // | |||
| 20252 | ||||
| 20253 | // abs_h2o needed here. check, whether this is valid. | |||
| 20254 | if( abs_h2o.sum() < -1. ) | |||
| 20255 | { | |||
| 20256 | ostringstream os; | |||
| 20257 | os << "Continuum/full model tag " << name << " requires H2O-vmr, but no tag group contains H2O!"; | |||
| 20258 | throw runtime_error(os.str()); | |||
| 20259 | } | |||
| 20260 | ||||
| 20261 | const int Nparam = 4; | |||
| 20262 | const char *version="PWR98"; | |||
| 20263 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 20264 | { | |||
| 20265 | out3 << "Full model " << name << " is running with \n" | |||
| 20266 | << "user defined parameters according to model " << model << ".\n"; | |||
| 20267 | PWR93O2AbsModel( pxsec, | |||
| 20268 | parameters[0], // continuum term scale factor | |||
| 20269 | parameters[1], // line strength scale factor | |||
| 20270 | parameters[2], // line broadening scale factor | |||
| 20271 | parameters[3], // line coupling scale factor | |||
| 20272 | model, | |||
| 20273 | version, | |||
| 20274 | f_grid, | |||
| 20275 | abs_p, | |||
| 20276 | abs_t, | |||
| 20277 | abs_h2o, | |||
| 20278 | vmr, | |||
| 20279 | verbosity ); | |||
| 20280 | } | |||
| 20281 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 20282 | { | |||
| 20283 | ostringstream os; | |||
| 20284 | os << "Full model " << name << " requires " << Nparam << " input\n" | |||
| 20285 | << "parameters for the model " << model << ",\n" | |||
| 20286 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 20287 | throw runtime_error(os.str()); | |||
| 20288 | } | |||
| 20289 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 20290 | { | |||
| 20291 | out3 << "Full model " << name << " running with \n" | |||
| 20292 | << "the parameters for model " << model << ".\n"; | |||
| 20293 | PWR93O2AbsModel( pxsec, | |||
| 20294 | 0.00, | |||
| 20295 | 0.00, | |||
| 20296 | 0.00, | |||
| 20297 | 0.00, | |||
| 20298 | model, | |||
| 20299 | version, | |||
| 20300 | f_grid, | |||
| 20301 | abs_p, | |||
| 20302 | abs_t, | |||
| 20303 | abs_h2o, | |||
| 20304 | vmr, | |||
| 20305 | verbosity ); | |||
| 20306 | } | |||
| 20307 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 20308 | { | |||
| 20309 | ostringstream os; | |||
| 20310 | os << "ERROR: Full model " << name << " requires NO input\n" | |||
| 20311 | << "parameters for the model " << model << ",\n" | |||
| 20312 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 20313 | << "This ambiguity can not be solved by arts.\n" | |||
| 20314 | << "Please see the arts user guide chapter 3.\n"; | |||
| 20315 | throw runtime_error(os.str()); | |||
| 20316 | } | |||
| 20317 | } | |||
| 20318 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 20319 | else if ( "O2-MPM93"==name ) | |||
| 20320 | { | |||
| 20321 | // H. J. Liebe and G. A. Hufford and M. G. Cotton, | |||
| 20322 | // "Propagation modeling of moist air and suspended water/ice | |||
| 20323 | // particles at frequencies below 1000 GHz", | |||
| 20324 | // AGARD 52nd Specialists Meeting of the Electromagnetic Wave | |||
| 20325 | // Propagation Panel, Palma de Mallorca, Spain, 1993, May 17-21 | |||
| 20326 | // | |||
| 20327 | // specific continuum parameters and units: | |||
| 20328 | // OUTPUT | |||
| 20329 | // pxsec : [1/m], | |||
| 20330 | // INPUT | |||
| 20331 | // parameters[0] : continuum term scale factor, default CC = 1.000 [1] | |||
| 20332 | // parameters[1] : line strength scale factor, default CL = 1.000 [1] | |||
| 20333 | // parameters[2] : line broadening scale factor, default CW = 1.000 [1] | |||
| 20334 | // parameters[3] : line coupling scale factor, default CO = 1.000 [1] | |||
| 20335 | // f_grid : [Hz] | |||
| 20336 | // abs_p : [Pa] | |||
| 20337 | // abs_t : [K] | |||
| 20338 | // abs_h2o, : [1] | |||
| 20339 | // vmr : [1] | |||
| 20340 | // | |||
| 20341 | ||||
| 20342 | if( abs_h2o.sum() < -1. ) | |||
| 20343 | { | |||
| 20344 | ostringstream os; | |||
| 20345 | os << "Continuum/full model tag " << name | |||
| 20346 | << " requires H2O-vmr, but no tag group contains H2O!"; | |||
| 20347 | throw runtime_error(os.str()); | |||
| 20348 | } | |||
| 20349 | ||||
| 20350 | const int Nparam = 4; | |||
| 20351 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 20352 | { | |||
| 20353 | out3 << "Full model " << name << " is running with \n" | |||
| 20354 | << "user defined parameters according to model " << model << ".\n"; | |||
| 20355 | MPM93O2AbsModel( pxsec, | |||
| 20356 | parameters[0], // continuum term scale factor | |||
| 20357 | parameters[1], // line strength scale factor | |||
| 20358 | parameters[2], // line broadening scale factor | |||
| 20359 | parameters[3], // line coupling scale factor | |||
| 20360 | model, | |||
| 20361 | f_grid, | |||
| 20362 | abs_p, | |||
| 20363 | abs_t, | |||
| 20364 | abs_h2o, | |||
| 20365 | vmr, | |||
| 20366 | verbosity ); | |||
| 20367 | } | |||
| 20368 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 20369 | { | |||
| 20370 | ostringstream os; | |||
| 20371 | os << "Full model " << name << " requires " << Nparam << " input\n" | |||
| 20372 | << "parameters for the model " << model << ",\n" | |||
| 20373 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 20374 | throw runtime_error(os.str()); | |||
| 20375 | } | |||
| 20376 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 20377 | { | |||
| 20378 | out3 << "Full model " << name << " running with \n" | |||
| 20379 | << "the parameters for model " << model << ".\n"; | |||
| 20380 | MPM93O2AbsModel( pxsec, | |||
| 20381 | 0.00, | |||
| 20382 | 0.00, | |||
| 20383 | 0.00, | |||
| 20384 | 0.00, | |||
| 20385 | model, | |||
| 20386 | f_grid, | |||
| 20387 | abs_p, | |||
| 20388 | abs_t, | |||
| 20389 | abs_h2o, | |||
| 20390 | vmr, | |||
| 20391 | verbosity ); | |||
| 20392 | } | |||
| 20393 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 20394 | { | |||
| 20395 | ostringstream os; | |||
| 20396 | os << "ERROR: Full model " << name << " requires NO input\n" | |||
| 20397 | << "parameters for the model " << model << ",\n" | |||
| 20398 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 20399 | << "This ambiguity can not be solved by arts.\n" | |||
| 20400 | << "Please see the arts user guide chapter 3.\n"; | |||
| 20401 | throw runtime_error(os.str()); | |||
| 20402 | } | |||
| 20403 | } | |||
| 20404 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 20405 | else if ( "O2-TRE05"==name ) | |||
| 20406 | { | |||
| 20407 | // H. J. Liebe and G. A. Hufford and M. G. Cotton, | |||
| 20408 | // "Propagation modeling of moist air and suspended water/ice | |||
| 20409 | // particles at frequencies below 1000 GHz", | |||
| 20410 | // AGARD 52nd Specialists Meeting of the Electromagnetic Wave | |||
| 20411 | // Propagation Panel, Palma de Mallorca, Spain, 1993, May 17-21 | |||
| 20412 | // | |||
| 20413 | // specific continuum parameters and units: | |||
| 20414 | // OUTPUT | |||
| 20415 | // pxsec : [1/m], | |||
| 20416 | // INPUT | |||
| 20417 | // parameters[0] : continuum term scale factor, default CC = 1.000 [1] | |||
| 20418 | // parameters[1] : line strength scale factor, default CL = 1.000 [1] | |||
| 20419 | // parameters[2] : line broadening scale factor, default CW = 1.000 [1] | |||
| 20420 | // parameters[3] : line coupling scale factor, default CO = 1.000 [1] | |||
| 20421 | // f_grid : [Hz] | |||
| 20422 | // abs_p : [Pa] | |||
| 20423 | // abs_t : [K] | |||
| 20424 | // abs_h2o, : [1] | |||
| 20425 | // vmr : [1] | |||
| 20426 | // | |||
| 20427 | ||||
| 20428 | if( abs_h2o.sum() < -1. ) | |||
| 20429 | { | |||
| 20430 | ostringstream os; | |||
| 20431 | os << "Continuum/full model tag " << name | |||
| 20432 | << " requires H2O-vmr, but no tag group contains H2O!"; | |||
| 20433 | throw runtime_error(os.str()); | |||
| 20434 | } | |||
| 20435 | ||||
| 20436 | const int Nparam = 4; | |||
| 20437 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 20438 | { | |||
| 20439 | out3 << "Full model " << name << " is running with \n" | |||
| 20440 | << "user defined parameters according to model " << model << ".\n"; | |||
| 20441 | TRE05O2AbsModel( pxsec, | |||
| 20442 | parameters[0], // continuum term scale factor | |||
| 20443 | parameters[1], // line strength scale factor | |||
| 20444 | parameters[2], // line broadening scale factor | |||
| 20445 | parameters[3], // line coupling scale factor | |||
| 20446 | model, | |||
| 20447 | f_grid, | |||
| 20448 | abs_p, | |||
| 20449 | abs_t, | |||
| 20450 | abs_h2o, | |||
| 20451 | vmr, | |||
| 20452 | verbosity ); | |||
| 20453 | } | |||
| 20454 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 20455 | { | |||
| 20456 | ostringstream os; | |||
| 20457 | os << "Full model " << name << " requires " << Nparam << " input\n" | |||
| 20458 | << "parameters for the model " << model << ",\n" | |||
| 20459 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 20460 | throw runtime_error(os.str()); | |||
| 20461 | } | |||
| 20462 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 20463 | { | |||
| 20464 | out3 << "Full model " << name << " running with \n" | |||
| 20465 | << "the parameters for model " << model << ".\n"; | |||
| 20466 | TRE05O2AbsModel( pxsec, | |||
| 20467 | 0.00, | |||
| 20468 | 0.00, | |||
| 20469 | 0.00, | |||
| 20470 | 0.00, | |||
| 20471 | model, | |||
| 20472 | f_grid, | |||
| 20473 | abs_p, | |||
| 20474 | abs_t, | |||
| 20475 | abs_h2o, | |||
| 20476 | vmr, | |||
| 20477 | verbosity ); | |||
| 20478 | } | |||
| 20479 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 20480 | { | |||
| 20481 | ostringstream os; | |||
| 20482 | os << "ERROR: Full model " << name << " requires NO input\n" | |||
| 20483 | << "parameters for the model " << model << ",\n" | |||
| 20484 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 20485 | << "This ambiguity can not be solved by arts.\n" | |||
| 20486 | << "Please see the arts user guide chapter 3.\n"; | |||
| 20487 | throw runtime_error(os.str()); | |||
| 20488 | } | |||
| 20489 | } | |||
| 20490 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 20491 | else if ( "O2-MPM92"==name ) | |||
| 20492 | { | |||
| 20493 | // H. J. Liebe, P. W. Rosenkranz and G. A. Hufford, | |||
| 20494 | // Atmospheric 60-GHz Oxygen Spectrum: New Laboratory | |||
| 20495 | // Measurements and Line Parameters | |||
| 20496 | // JQSRT, Vol 48, pp. 629-643, 1992 | |||
| 20497 | // | |||
| 20498 | // specific continuum parameters and units: | |||
| 20499 | // OUTPUT | |||
| 20500 | // pxsec : [1/m], | |||
| 20501 | // INPUT | |||
| 20502 | // parameters[0] : continuum term scale factor, default CC = 1.000 [1] | |||
| 20503 | // parameters[1] : line strength scale factor, default CL = 1.000 [1] | |||
| 20504 | // parameters[2] : line broadening scale factor, default CW = 1.000 [1] | |||
| 20505 | // parameters[3] : line coupling scale factor, default CO = 1.000 [1] | |||
| 20506 | // f_grid : [Hz] | |||
| 20507 | // abs_p : [Pa] | |||
| 20508 | // abs_t : [K] | |||
| 20509 | // abs_h2o, : [1] | |||
| 20510 | // vmr : [1] | |||
| 20511 | // | |||
| 20512 | ||||
| 20513 | if( abs_h2o.sum() < -1. ) | |||
| 20514 | { | |||
| 20515 | ostringstream os; | |||
| 20516 | os << "Continuum/full model tag " << name | |||
| 20517 | << " requires H2O-vmr, but no tag group contains H2O!"; | |||
| 20518 | throw runtime_error(os.str()); | |||
| 20519 | } | |||
| 20520 | ||||
| 20521 | const int Nparam = 4; | |||
| 20522 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 20523 | { | |||
| 20524 | out3 << "Full model " << name << " is running with \n" | |||
| 20525 | << "user defined parameters according to model " << model << ".\n"; | |||
| 20526 | MPM92O2AbsModel( pxsec, | |||
| 20527 | parameters[0], // continuum term scale factor | |||
| 20528 | parameters[1], // line strength scale factor | |||
| 20529 | parameters[2], // line broadening scale factor | |||
| 20530 | parameters[3], // line coupling scale factor | |||
| 20531 | model, | |||
| 20532 | f_grid, | |||
| 20533 | abs_p, | |||
| 20534 | abs_t, | |||
| 20535 | abs_h2o, | |||
| 20536 | vmr, | |||
| 20537 | verbosity ); | |||
| 20538 | } | |||
| 20539 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 20540 | { | |||
| 20541 | ostringstream os; | |||
| 20542 | os << "Full model " << name << " requires " << Nparam << " input\n" | |||
| 20543 | << "parameters for the model " << model << ",\n" | |||
| 20544 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 20545 | throw runtime_error(os.str()); | |||
| 20546 | } | |||
| 20547 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 20548 | { | |||
| 20549 | out3 << "Full model " << name << " running with \n" | |||
| 20550 | << "the parameters for model " << model << ".\n"; | |||
| 20551 | MPM92O2AbsModel( pxsec, | |||
| 20552 | 0.00, | |||
| 20553 | 0.00, | |||
| 20554 | 0.00, | |||
| 20555 | 0.00, | |||
| 20556 | model, | |||
| 20557 | f_grid, | |||
| 20558 | abs_p, | |||
| 20559 | abs_t, | |||
| 20560 | abs_h2o, | |||
| 20561 | vmr, | |||
| 20562 | verbosity ); | |||
| 20563 | } | |||
| 20564 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 20565 | { | |||
| 20566 | ostringstream os; | |||
| 20567 | os << "ERROR: Full model " << name << " requires NO input\n" | |||
| 20568 | << "parameters for the model " << model << ",\n" | |||
| 20569 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 20570 | << "This ambiguity can not be solved by arts.\n" | |||
| 20571 | << "Please see the arts user guide chapter 3.\n"; | |||
| 20572 | throw runtime_error(os.str()); | |||
| 20573 | } | |||
| 20574 | } | |||
| 20575 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 20576 | else if ( "O2-MPM89"==name ) | |||
| 20577 | { | |||
| 20578 | // H. J. Liebe, | |||
| 20579 | // MPM - an atmospheric millimeter-wave propagation model, | |||
| 20580 | // Int. J. Infrared and Mill. Waves, Vol 10, pp. 631-650, 1989. | |||
| 20581 | // | |||
| 20582 | // specific continuum parameters and units: | |||
| 20583 | // OUTPUT | |||
| 20584 | // pxsec : [1/m], | |||
| 20585 | // INPUT | |||
| 20586 | // parameters[0] : continuum term scale factor, default CC = 1.000 [1] | |||
| 20587 | // parameters[1] : line strength scale factor, default CL = 1.000 [1] | |||
| 20588 | // parameters[2] : line broadening scale factor, default CW = 1.000 [1] | |||
| 20589 | // parameters[3] : line coupling scale factor, default CO = 1.000 [1] | |||
| 20590 | // f_grid : [Hz] | |||
| 20591 | // abs_p : [Pa] | |||
| 20592 | // abs_t : [K] | |||
| 20593 | // abs_h2o, : [1] | |||
| 20594 | // vmr : [1] | |||
| 20595 | // | |||
| 20596 | ||||
| 20597 | if( abs_h2o.sum() < -1. ) | |||
| 20598 | { | |||
| 20599 | ostringstream os; | |||
| 20600 | os << "Continuum/full model tag " << name | |||
| 20601 | << " requires H2O-vmr, but no tag group contains H2O!"; | |||
| 20602 | throw runtime_error(os.str()); | |||
| 20603 | } | |||
| 20604 | ||||
| 20605 | const int Nparam = 4; | |||
| 20606 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 20607 | { | |||
| 20608 | out3 << "Full model " << name << " is running with \n" | |||
| 20609 | << "user defined parameters according to model " << model << ".\n"; | |||
| 20610 | MPM89O2AbsModel( pxsec, | |||
| 20611 | parameters[0], // continuum term scale factor | |||
| 20612 | parameters[1], // line strength scale factor | |||
| 20613 | parameters[2], // line broadening scale factor | |||
| 20614 | parameters[3], // line coupling scale factor | |||
| 20615 | model, | |||
| 20616 | f_grid, | |||
| 20617 | abs_p, | |||
| 20618 | abs_t, | |||
| 20619 | abs_h2o, | |||
| 20620 | vmr, | |||
| 20621 | verbosity ); | |||
| 20622 | } | |||
| 20623 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 20624 | { | |||
| 20625 | ostringstream os; | |||
| 20626 | os << "Full model " << name << " requires " << Nparam << " input\n" | |||
| 20627 | << "parameters for the model " << model << ",\n" | |||
| 20628 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 20629 | throw runtime_error(os.str()); | |||
| 20630 | } | |||
| 20631 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 20632 | { | |||
| 20633 | out3 << "Full model " << name << " running with \n" | |||
| 20634 | << "the parameters for model " << model << ".\n"; | |||
| 20635 | MPM89O2AbsModel( pxsec, | |||
| 20636 | 0.00, | |||
| 20637 | 0.00, | |||
| 20638 | 0.00, | |||
| 20639 | 0.00, | |||
| 20640 | model, | |||
| 20641 | f_grid, | |||
| 20642 | abs_p, | |||
| 20643 | abs_t, | |||
| 20644 | abs_h2o, | |||
| 20645 | vmr, | |||
| 20646 | verbosity ); | |||
| 20647 | } | |||
| 20648 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 20649 | { | |||
| 20650 | ostringstream os; | |||
| 20651 | os << "ERROR: Full model " << name << " requires NO input\n" | |||
| 20652 | << "parameters for the model " << model << ",\n" | |||
| 20653 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 20654 | << "This ambiguity can not be solved by arts.\n" | |||
| 20655 | << "Please see the arts user guide chapter 3.\n"; | |||
| 20656 | throw runtime_error(os.str()); | |||
| 20657 | } | |||
| 20658 | } | |||
| 20659 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 20660 | else if ( "O2-MPM87"==name ) | |||
| 20661 | { | |||
| 20662 | // H. J. Liebe and D. H. Layton, | |||
| 20663 | // Millimeter-wave properties of the atmosphere: | |||
| 20664 | // Laboratory studies and propagation modelling, | |||
| 20665 | // NITA Report 87-224, | |||
| 20666 | // U.S. Dept. of Commerce, National Telecommunications and Information | |||
| 20667 | // Administration, Institute for Communication Sciences, rep. 87-224, | |||
| 20668 | // 325 Broadway, Boulder, CO 80303-3328 | |||
| 20669 | // | |||
| 20670 | // specific continuum parameters and units: | |||
| 20671 | // OUTPUT | |||
| 20672 | // pxsec : [1/m], | |||
| 20673 | // INPUT | |||
| 20674 | // parameters[0] : continuum term scale factor, default CC = 1.000 [1] | |||
| 20675 | // parameters[1] : line strength scale factor, default CL = 1.000 [1] | |||
| 20676 | // parameters[2] : line broadening scale factor, default CW = 1.000 [1] | |||
| 20677 | // parameters[3] : line coupling scale factor, default CO = 1.000 [1] | |||
| 20678 | // f_grid : [Hz] | |||
| 20679 | // abs_p : [Pa] | |||
| 20680 | // abs_t : [K] | |||
| 20681 | // abs_h2o, : [1] | |||
| 20682 | // vmr : [1] | |||
| 20683 | // | |||
| 20684 | ||||
| 20685 | if( abs_h2o.sum() < -1. ) | |||
| 20686 | { | |||
| 20687 | ostringstream os; | |||
| 20688 | os << "Continuum/full model tag " << name | |||
| 20689 | << " requires H2O-vmr, but no tag group contains H2O!"; | |||
| 20690 | throw runtime_error(os.str()); | |||
| 20691 | } | |||
| 20692 | ||||
| 20693 | const int Nparam = 4; | |||
| 20694 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 20695 | { | |||
| 20696 | out3 << "Full model " << name << " is running with \n" | |||
| 20697 | << "user defined parameters according to model " << model << ".\n"; | |||
| 20698 | MPM87O2AbsModel( pxsec, | |||
| 20699 | parameters[0], // continuum term scale factor | |||
| 20700 | parameters[1], // line strength scale factor | |||
| 20701 | parameters[2], // line broadening scale factor | |||
| 20702 | parameters[3], // line coupling scale factor | |||
| 20703 | model, | |||
| 20704 | f_grid, | |||
| 20705 | abs_p, | |||
| 20706 | abs_t, | |||
| 20707 | abs_h2o, | |||
| 20708 | vmr, | |||
| 20709 | verbosity ); | |||
| 20710 | } | |||
| 20711 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 20712 | { | |||
| 20713 | ostringstream os; | |||
| 20714 | os << "Full model " << name << " requires " << Nparam << " input\n" | |||
| 20715 | << "parameters for the model " << model << ",\n" | |||
| 20716 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 20717 | throw runtime_error(os.str()); | |||
| 20718 | } | |||
| 20719 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 20720 | { | |||
| 20721 | out3 << "Full model " << name << " running with \n" | |||
| 20722 | << "the parameters for model " << model << ".\n"; | |||
| 20723 | MPM87O2AbsModel( pxsec, | |||
| 20724 | 0.00, | |||
| 20725 | 0.00, | |||
| 20726 | 0.00, | |||
| 20727 | 0.00, | |||
| 20728 | model, | |||
| 20729 | f_grid, | |||
| 20730 | abs_p, | |||
| 20731 | abs_t, | |||
| 20732 | abs_h2o, | |||
| 20733 | vmr, | |||
| 20734 | verbosity ); | |||
| 20735 | } | |||
| 20736 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 20737 | { | |||
| 20738 | ostringstream os; | |||
| 20739 | os << "ERROR: Full model " << name << " requires NO input\n" | |||
| 20740 | << "parameters for the model " << model << ",\n" | |||
| 20741 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 20742 | << "This ambiguity can not be solved by arts.\n" | |||
| 20743 | << "Please see the arts user guide chapter 3.\n"; | |||
| 20744 | throw runtime_error(os.str()); | |||
| 20745 | } | |||
| 20746 | } | |||
| 20747 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 20748 | else if ( "O2-MPM85"==name ) | |||
| 20749 | { | |||
| 20750 | // H. J. Liebe and D. H. Layton, | |||
| 20751 | // An updated model for millimeter wave propagation in moist air | |||
| 20752 | // Radio Science, vol. 20, pp. 1069-1089, 1985 | |||
| 20753 | // | |||
| 20754 | // specific continuum parameters and units: | |||
| 20755 | // OUTPUT | |||
| 20756 | // pxsec : [1/m], | |||
| 20757 | // INPUT | |||
| 20758 | // parameters[0] : continuum term scale factor, default CC = 1.000 [1] | |||
| 20759 | // parameters[1] : line strength scale factor, default CL = 1.000 [1] | |||
| 20760 | // parameters[2] : line broadening scale factor, default CW = 1.000 [1] | |||
| 20761 | // parameters[3] : line coupling scale factor, default CO = 1.000 [1] | |||
| 20762 | // f_grid : [Hz] | |||
| 20763 | // abs_p : [Pa] | |||
| 20764 | // abs_t : [K] | |||
| 20765 | // abs_h2o, : [1] | |||
| 20766 | // vmr : [1] | |||
| 20767 | // | |||
| 20768 | ||||
| 20769 | if( abs_h2o.sum() < -1. ) | |||
| 20770 | { | |||
| 20771 | ostringstream os; | |||
| 20772 | os << "Continuum/full model tag " << name | |||
| 20773 | << " requires H2O-vmr, but no tag group contains H2O!"; | |||
| 20774 | throw runtime_error(os.str()); | |||
| 20775 | } | |||
| 20776 | ||||
| 20777 | const int Nparam = 4; | |||
| 20778 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 20779 | { | |||
| 20780 | out3 << "Full model " << name << " is running with \n" | |||
| 20781 | << "user defined parameters according to model " << model << ".\n"; | |||
| 20782 | MPM85O2AbsModel( pxsec, | |||
| 20783 | parameters[0], // continuum term scale factor | |||
| 20784 | parameters[1], // line strength scale factor | |||
| 20785 | parameters[2], // line broadening scale factor | |||
| 20786 | parameters[3], // line coupling scale factor | |||
| 20787 | model, | |||
| 20788 | f_grid, | |||
| 20789 | abs_p, | |||
| 20790 | abs_t, | |||
| 20791 | abs_h2o, | |||
| 20792 | vmr, | |||
| 20793 | verbosity ); | |||
| 20794 | } | |||
| 20795 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 20796 | { | |||
| 20797 | ostringstream os; | |||
| 20798 | os << "Full model " << name << " requires " << Nparam << " input\n" | |||
| 20799 | << "parameters for the model " << model << ",\n" | |||
| 20800 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 20801 | throw runtime_error(os.str()); | |||
| 20802 | } | |||
| 20803 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 20804 | { | |||
| 20805 | out3 << "Full model " << name << " running with \n" | |||
| 20806 | << "the parameters for model " << model << ".\n"; | |||
| 20807 | MPM85O2AbsModel( pxsec, | |||
| 20808 | 0.00, | |||
| 20809 | 0.00, | |||
| 20810 | 0.00, | |||
| 20811 | 0.00, | |||
| 20812 | model, | |||
| 20813 | f_grid, | |||
| 20814 | abs_p, | |||
| 20815 | abs_t, | |||
| 20816 | abs_h2o, | |||
| 20817 | vmr, | |||
| 20818 | verbosity ); | |||
| 20819 | } | |||
| 20820 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 20821 | { | |||
| 20822 | ostringstream os; | |||
| 20823 | os << "ERROR: Full model " << name << " requires NO input\n" | |||
| 20824 | << "parameters for the model " << model << ",\n" | |||
| 20825 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 20826 | << "This ambiguity can not be solved by arts.\n" | |||
| 20827 | << "Please see the arts user guide chapter 3.\n"; | |||
| 20828 | throw runtime_error(os.str()); | |||
| 20829 | } | |||
| 20830 | } | |||
| 20831 | // ============= N2 continuum ========================================================= | |||
| 20832 | else if ( "N2-SelfContMPM93"==name ) | |||
| 20833 | { | |||
| 20834 | // MPM93 N2 continuum: | |||
| 20835 | // see publication side of National Telecommunications and Information Administration | |||
| 20836 | // http://www.its.bldrdoc.gov/pub/all_pubs/all_pubs.html | |||
| 20837 | // and ftp side for downloading the MPM93 original source code: | |||
| 20838 | // ftp://ftp.its.bldrdoc.gov/pub/mpm93/ | |||
| 20839 | // | |||
| 20840 | // specific continuum parameters and units: | |||
| 20841 | // OUTPUT | |||
| 20842 | // pxsec : [1/m], | |||
| 20843 | // INPUT | |||
| 20844 | // parameters[0] : strength parameter [1/m * 1/(Hz²*Pa²)] | |||
| 20845 | // parameters[1] : broadening parameter [1] | |||
| 20846 | // parameters[2] : temperature exponent [1] | |||
| 20847 | // parameters[3] : frequency exponent [1] | |||
| 20848 | // f_grid : [Hz] | |||
| 20849 | // abs_p : [Pa] | |||
| 20850 | // abs_t : [K] | |||
| 20851 | // abs_h2o : [1] | |||
| 20852 | // vmr : [1] | |||
| 20853 | // | |||
| 20854 | ||||
| 20855 | if( abs_h2o.sum() < -1. ) | |||
| 20856 | { | |||
| 20857 | ostringstream os; | |||
| 20858 | os << "Continuum/full model tag " << name | |||
| 20859 | << " requires H2O-vmr, but no tag group contains H2O!"; | |||
| 20860 | throw runtime_error(os.str()); | |||
| 20861 | } | |||
| 20862 | ||||
| 20863 | const int Nparam = 4; | |||
| 20864 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 20865 | { | |||
| 20866 | out3 << "Continuum model " << name << " is running with \n" | |||
| 20867 | << "user defined parameters according to model " << model << ".\n"; | |||
| 20868 | MPM93_N2_continuum( pxsec, | |||
| 20869 | parameters[0], | |||
| 20870 | parameters[1], | |||
| 20871 | parameters[2], | |||
| 20872 | parameters[3], | |||
| 20873 | model, | |||
| 20874 | f_grid, | |||
| 20875 | abs_p, | |||
| 20876 | abs_t, | |||
| 20877 | abs_h2o, | |||
| 20878 | vmr, | |||
| 20879 | verbosity ); | |||
| 20880 | } | |||
| 20881 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 20882 | { | |||
| 20883 | ostringstream os; | |||
| 20884 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 20885 | << "parameters for the model " << model << ",\n" | |||
| 20886 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 20887 | throw runtime_error(os.str()); | |||
| 20888 | } | |||
| 20889 | else if ( (model == "MPM93Scale") && (parameters.nelem() == 1) ) // -------------------- | |||
| 20890 | { | |||
| 20891 | out3 << "Continuum model " << name << " running with \n" | |||
| 20892 | << "the parameters for model " << model << ".\n"; | |||
| 20893 | MPM93_N2_continuum( pxsec, | |||
| 20894 | parameters[0], | |||
| 20895 | 0.00, | |||
| 20896 | 0.00, | |||
| 20897 | 0.00, | |||
| 20898 | model, | |||
| 20899 | f_grid, | |||
| 20900 | abs_p, | |||
| 20901 | abs_t, | |||
| 20902 | abs_h2o, | |||
| 20903 | vmr, | |||
| 20904 | verbosity ); | |||
| 20905 | } | |||
| 20906 | else if ( (model == "MPM93Scale") && (parameters.nelem() != 1) ) // -------------------- | |||
| 20907 | { | |||
| 20908 | ostringstream os; | |||
| 20909 | os << "Continuum model " << name << " requires 1 scaling input\n" | |||
| 20910 | << "parameters for the model " << model << ",\n" | |||
| 20911 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 20912 | throw runtime_error(os.str()); | |||
| 20913 | } | |||
| 20914 | else if ( (model != "user") && (model != "MPM93Scale") && (parameters.nelem() == 0) ) // -- | |||
| 20915 | { | |||
| 20916 | out3 << "Continuum model " << name << " running with \n" | |||
| 20917 | << "the parameters for model " << model << ".\n"; | |||
| 20918 | MPM93_N2_continuum( pxsec, | |||
| 20919 | 0.00, | |||
| 20920 | 0.00, | |||
| 20921 | 0.00, | |||
| 20922 | 0.00, | |||
| 20923 | model, | |||
| 20924 | f_grid, | |||
| 20925 | abs_p, | |||
| 20926 | abs_t, | |||
| 20927 | abs_h2o, | |||
| 20928 | vmr, | |||
| 20929 | verbosity ); | |||
| 20930 | } | |||
| 20931 | /* -------------------------------------------------------------------------- | |||
| 20932 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 20933 | { | |||
| 20934 | ostringstream os; | |||
| 20935 | os << "ERROR: Continuum model " << name << " requires NO input\n" | |||
| 20936 | << "parameters for the model " << model << ",\n" | |||
| 20937 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 20938 | << "This ambiguity can not be solved by arts.\n" | |||
| 20939 | << "Please see the arts user guide chapter 3.\n"; | |||
| 20940 | throw runtime_error(os.str()); | |||
| 20941 | } | |||
| 20942 | ----------------------------------------------------------------------*/ | |||
| 20943 | } | |||
| 20944 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 20945 | else if ( "N2-DryContATM01"==name ) | |||
| 20946 | { | |||
| 20947 | // data information about this continuum: | |||
| 20948 | // Pardo et al. model model (IEEE, Trans. Ant. Prop., | |||
| 20949 | // Vol 49, No 12, pp. 1683-1694, 2001) | |||
| 20950 | // | |||
| 20951 | // specific continuum parameters and units: | |||
| 20952 | // a) output | |||
| 20953 | // pxsec : [1/m], | |||
| 20954 | // b) input | |||
| 20955 | // parameters[0] : continuum strength coefficient [1/m * 1/(Hz*Pa)²] | |||
| 20956 | // f_grid : [Hz] | |||
| 20957 | // abs_p : [Pa] | |||
| 20958 | // abs_t : [K] | |||
| 20959 | // vmr : [1] N2 vmr | |||
| 20960 | // abs_h2o : [1] H2O vmr | |||
| 20961 | // | |||
| 20962 | ||||
| 20963 | if( abs_h2o.sum() < -1. ) | |||
| 20964 | { | |||
| 20965 | ostringstream os; | |||
| 20966 | os << "Continuum/full model tag " << name | |||
| 20967 | << " requires H2O-vmr, but no tag group contains H2O!"; | |||
| 20968 | throw runtime_error(os.str()); | |||
| 20969 | } | |||
| 20970 | ||||
| 20971 | const int Nparam = 1; | |||
| 20972 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 20973 | { | |||
| 20974 | out3 << "Continuum model " << name << " is running with \n" | |||
| 20975 | << "user defined parameters according to model " << model << ".\n"; | |||
| 20976 | Pardo_ATM_N2_dry_continuum( pxsec, | |||
| 20977 | parameters[0], // coefficient | |||
| 20978 | model, | |||
| 20979 | f_grid, | |||
| 20980 | abs_p, | |||
| 20981 | abs_t, | |||
| 20982 | vmr, | |||
| 20983 | abs_h2o, | |||
| 20984 | verbosity ); | |||
| 20985 | } | |||
| 20986 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 20987 | { | |||
| 20988 | ostringstream os; | |||
| 20989 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 20990 | << "parameters for the model " << model << ",\n" | |||
| 20991 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 20992 | throw runtime_error(os.str()); | |||
| 20993 | } | |||
| 20994 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 20995 | { | |||
| 20996 | out3 << "Continuum model " << name << " running with \n" | |||
| 20997 | << "the parameters for model " << model << ".\n"; | |||
| 20998 | Pardo_ATM_N2_dry_continuum( pxsec, | |||
| 20999 | 0.000, // coefficient | |||
| 21000 | model, | |||
| 21001 | f_grid, | |||
| 21002 | abs_p, | |||
| 21003 | abs_t, | |||
| 21004 | vmr, | |||
| 21005 | abs_h2o, | |||
| 21006 | verbosity ); | |||
| 21007 | } | |||
| 21008 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 21009 | { | |||
| 21010 | ostringstream os; | |||
| 21011 | os << "ERROR: Continuum model " << name << " requires NO input\n" | |||
| 21012 | << "parameters for the model " << model << ",\n" | |||
| 21013 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 21014 | << "This ambiguity can not be solved by arts.\n" | |||
| 21015 | << "Please see the arts user guide chapter 3.\n"; | |||
| 21016 | throw runtime_error(os.str()); | |||
| 21017 | } | |||
| 21018 | } | |||
| 21019 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 21020 | else if ( "N2-SelfContPWR93"==name ) | |||
| 21021 | { | |||
| 21022 | // data information about this continuum: | |||
| 21023 | // P. W. Rosenkranz Chapter 2, pp 74, in M. A. Janssen, | |||
| 21024 | // "Atmospheric Remote Sensing by Microwave Radiometry", | |||
| 21025 | // John Wiley & Sons, Inc., 1993, ISBN 0-471-62891-3 | |||
| 21026 | // | |||
| 21027 | // specific continuum parameters and units: | |||
| 21028 | // a) output | |||
| 21029 | // pxsec : [1/m], | |||
| 21030 | // b) input | |||
| 21031 | // parameters[0] : continuum strength coefficient [1/m * 1/(Hz*Pa)²] | |||
| 21032 | // parameters[1] : continuum temperature exponent [1] | |||
| 21033 | // f_grid : [Hz] | |||
| 21034 | // abs_p : [Pa] | |||
| 21035 | // abs_t : [K] | |||
| 21036 | // vmr : [1] | |||
| 21037 | // | |||
| 21038 | const int Nparam = 2; | |||
| 21039 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 21040 | { | |||
| 21041 | out3 << "Continuum model " << name << " is running with \n" | |||
| 21042 | << "user defined parameters according to model " << model << ".\n"; | |||
| 21043 | Rosenkranz_N2_self_continuum( pxsec, | |||
| 21044 | parameters[0], // coefficient | |||
| 21045 | parameters[1], // temp. exponent | |||
| 21046 | model, | |||
| 21047 | f_grid, | |||
| 21048 | abs_p, | |||
| 21049 | abs_t, | |||
| 21050 | vmr, | |||
| 21051 | verbosity ); | |||
| 21052 | } | |||
| 21053 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 21054 | { | |||
| 21055 | ostringstream os; | |||
| 21056 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 21057 | << "parameters for the model " << model << ",\n" | |||
| 21058 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 21059 | throw runtime_error(os.str()); | |||
| 21060 | } | |||
| 21061 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 21062 | { | |||
| 21063 | out3 << "Continuum model " << name << " running with \n" | |||
| 21064 | << "the parameters for model " << model << ".\n"; | |||
| 21065 | Rosenkranz_N2_self_continuum( pxsec, | |||
| 21066 | 0.00, | |||
| 21067 | 0.00, | |||
| 21068 | model, | |||
| 21069 | f_grid, | |||
| 21070 | abs_p, | |||
| 21071 | abs_t, | |||
| 21072 | vmr, | |||
| 21073 | verbosity ); | |||
| 21074 | } | |||
| 21075 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 21076 | { | |||
| 21077 | ostringstream os; | |||
| 21078 | os << "ERROR: Continuum model " << name << " requires NO input\n" | |||
| 21079 | << "parameters for the model " << model << ",\n" | |||
| 21080 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 21081 | << "This ambiguity can not be solved by arts.\n" | |||
| 21082 | << "Please see the arts user guide chapter 3.\n"; | |||
| 21083 | throw runtime_error(os.str()); | |||
| 21084 | } | |||
| 21085 | } | |||
| 21086 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 21087 | else if ( "N2-SelfContStandardType"==name ) | |||
| 21088 | { | |||
| 21089 | // data information about this continuum: | |||
| 21090 | // A completely general expression for the N2 continuum | |||
| 21091 | // | |||
| 21092 | // specific continuum parameters and units: | |||
| 21093 | // OUTPUT | |||
| 21094 | // pxsec : [1/m], | |||
| 21095 | // INPUT | |||
| 21096 | // parameters[0] : continuum coefficient (C) [1/m * 1/(Hz*Pa)²] | |||
| 21097 | // parameters[1] : frequency exponent (xf) [1] | |||
| 21098 | // parameters[2] : temperature exponent (xt) [1] | |||
| 21099 | // parameters[3] : pressure exponent (xp) [1] | |||
| 21100 | // f_grid : [Hz] | |||
| 21101 | // abs_p : [Pa] | |||
| 21102 | // abs_t : [K] | |||
| 21103 | // vmr : [1] | |||
| 21104 | const int Nparam = 4; | |||
| 21105 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 21106 | { | |||
| 21107 | out3 << "Continuum model " << name << " is running with \n" | |||
| 21108 | << "user defined parameters according to model " << model << ".\n"; | |||
| 21109 | Standard_N2_self_continuum( pxsec, | |||
| 21110 | parameters[0], | |||
| 21111 | parameters[1], | |||
| 21112 | parameters[2], | |||
| 21113 | parameters[3], | |||
| 21114 | model, | |||
| 21115 | f_grid, | |||
| 21116 | abs_p, | |||
| 21117 | abs_t, | |||
| 21118 | vmr, | |||
| 21119 | verbosity ); | |||
| 21120 | } | |||
| 21121 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 21122 | { | |||
| 21123 | ostringstream os; | |||
| 21124 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 21125 | << "parameters for the model " << model << ",\n" | |||
| 21126 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 21127 | throw runtime_error(os.str()); | |||
| 21128 | } | |||
| 21129 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 21130 | { | |||
| 21131 | out3 << "Continuum model " << name << " running with \n" | |||
| 21132 | << "the parameters for model " << model << ".\n"; | |||
| 21133 | Standard_N2_self_continuum( pxsec, | |||
| 21134 | 0.000, | |||
| 21135 | 0.000, | |||
| 21136 | 0.000, | |||
| 21137 | 0.000, | |||
| 21138 | model, | |||
| 21139 | f_grid, | |||
| 21140 | abs_p, | |||
| 21141 | abs_t, | |||
| 21142 | vmr, | |||
| 21143 | verbosity ); | |||
| 21144 | } | |||
| 21145 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 21146 | { | |||
| 21147 | ostringstream os; | |||
| 21148 | os << "ERROR: Continuum model " << name << " requires NO input\n" | |||
| 21149 | << "parameters for the model " << model << ",\n" | |||
| 21150 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 21151 | << "This ambiguity can not be solved by arts.\n" | |||
| 21152 | << "Please see the arts user guide chapter 3.\n"; | |||
| 21153 | throw runtime_error(os.str()); | |||
| 21154 | } | |||
| 21155 | } | |||
| 21156 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 21157 | else if ( "N2-SelfContBorysow"==name ) | |||
| 21158 | { | |||
| 21159 | // data information about this continuum: | |||
| 21160 | // A. Borysow and L. Frommhold, The Astrophysical Journal, | |||
| 21161 | // Vol. 311, pp.1043-1057, 1986 | |||
| 21162 | const int Nparam = 1; | |||
| 21163 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 21164 | { | |||
| 21165 | out3 << "Continuum model " << name << " is running with \n" | |||
| 21166 | << "user defined parameters according to model " << model << ".\n"; | |||
| 21167 | BF86_CIA_N2( pxsec, | |||
| 21168 | parameters[0], // scaling factor | |||
| 21169 | model, | |||
| 21170 | f_grid, | |||
| 21171 | abs_p, | |||
| 21172 | abs_t, | |||
| 21173 | vmr, | |||
| 21174 | verbosity ); | |||
| 21175 | } | |||
| 21176 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 21177 | { | |||
| 21178 | ostringstream os; | |||
| 21179 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 21180 | << "parameters for the model " << model << ",\n" | |||
| 21181 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 21182 | throw runtime_error(os.str()); | |||
| 21183 | } | |||
| 21184 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 21185 | { | |||
| 21186 | out3 << "Continuum model " << name << " running with \n" | |||
| 21187 | << "the parameters for model " << model << ".\n"; | |||
| 21188 | BF86_CIA_N2( pxsec, | |||
| 21189 | 0.0, | |||
| 21190 | model, | |||
| 21191 | f_grid, | |||
| 21192 | abs_p, | |||
| 21193 | abs_t, | |||
| 21194 | vmr, | |||
| 21195 | verbosity ); | |||
| 21196 | } | |||
| 21197 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 21198 | { | |||
| 21199 | ostringstream os; | |||
| 21200 | os << "ERROR: Continuum model " << name << " requires NO input\n" | |||
| 21201 | << "parameters for the model " << model << ",\n" | |||
| 21202 | << "but you specified " << parameters.nelem() << " parameters. " << "\n" | |||
| 21203 | << "This ambiguity can not be solved by arts.\n" | |||
| 21204 | << "Please see the arts user guide chapter 3.\n"; | |||
| 21205 | throw runtime_error(os.str()); | |||
| 21206 | } | |||
| 21207 | } | |||
| 21208 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 21209 | else if ( "N2-CIArotCKDMT100"==name ) | |||
| 21210 | { | |||
| 21211 | // data information about this continuum: | |||
| 21212 | // A. Borysow and L. Frommhold, The Astrophysical Journal, | |||
| 21213 | // Vol. 311, pp.1043-1057, 1986 | |||
| 21214 | const int Nparam = 1; | |||
| 21215 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 21216 | { | |||
| 21217 | out3 << "Continuum model " << name << " is running with \n" | |||
| 21218 | << "user defined parameters according to model " << model << ".\n"; | |||
| 21219 | CKD_mt_CIArot_n2( pxsec, | |||
| 21220 | parameters[0], // scaling factor | |||
| 21221 | model, | |||
| 21222 | f_grid, | |||
| 21223 | abs_p, | |||
| 21224 | abs_t, | |||
| 21225 | vmr, | |||
| 21226 | verbosity ); | |||
| 21227 | } | |||
| 21228 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 21229 | { | |||
| 21230 | ostringstream os; | |||
| 21231 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 21232 | << "parameters for the model " << model << ",\n" | |||
| 21233 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 21234 | throw runtime_error(os.str()); | |||
| 21235 | } | |||
| 21236 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 21237 | { | |||
| 21238 | out3 << "Continuum model " << name << " running with \n" | |||
| 21239 | << "the parameters for model " << model << ".\n"; | |||
| 21240 | CKD_mt_CIArot_n2( pxsec, | |||
| 21241 | 0.0, | |||
| 21242 | model, | |||
| 21243 | f_grid, | |||
| 21244 | abs_p, | |||
| 21245 | abs_t, | |||
| 21246 | vmr, | |||
| 21247 | verbosity ); | |||
| 21248 | } | |||
| 21249 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 21250 | { | |||
| 21251 | ostringstream os; | |||
| 21252 | os << "ERROR: Continuum model " << name << " requires NO input\n" | |||
| 21253 | << "parameters for the model " << model << ",\n" | |||
| 21254 | << "but you specified " << parameters.nelem() << " parameters. " << "\n" | |||
| 21255 | << "This ambiguity can not be solved by arts.\n" | |||
| 21256 | << "Please see the arts user guide chapter 3.\n"; | |||
| 21257 | throw runtime_error(os.str()); | |||
| 21258 | } | |||
| 21259 | } | |||
| 21260 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 21261 | else if ( "N2-CIAfunCKDMT100"==name ) | |||
| 21262 | { | |||
| 21263 | // data information about this continuum: | |||
| 21264 | // Lafferty, W.J., A.M. Solodov,A. Weber, W.B. Olson and J._M. Hartmann, | |||
| 21265 | // Infrared collision-induced absorption by | |||
| 21266 | // N2 near 4.3 microns for atmospheric applications: | |||
| 21267 | // Measurements and emprirical modeling, | |||
| 21268 | // Appl. Optics, 35, 5911-5917, (1996) | |||
| 21269 | ||||
| 21270 | const int Nparam = 1; | |||
| 21271 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 21272 | { | |||
| 21273 | out3 << "Continuum model " << name << " is running with \n" | |||
| 21274 | << "user defined parameters according to model " << model << ".\n"; | |||
| 21275 | CKD_mt_CIAfun_n2( pxsec, | |||
| 21276 | parameters[0], // scaling factor | |||
| 21277 | model, | |||
| 21278 | f_grid, | |||
| 21279 | abs_p, | |||
| 21280 | abs_t, | |||
| 21281 | vmr, | |||
| 21282 | verbosity ); | |||
| 21283 | } | |||
| 21284 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 21285 | { | |||
| 21286 | ostringstream os; | |||
| 21287 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 21288 | << "parameters for the model " << model << ",\n" | |||
| 21289 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 21290 | throw runtime_error(os.str()); | |||
| 21291 | } | |||
| 21292 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 21293 | { | |||
| 21294 | out3 << "Continuum model " << name << " running with \n" | |||
| 21295 | << "the parameters for model " << model << ".\n"; | |||
| 21296 | CKD_mt_CIAfun_n2( pxsec, | |||
| 21297 | 0.0, | |||
| 21298 | model, | |||
| 21299 | f_grid, | |||
| 21300 | abs_p, | |||
| 21301 | abs_t, | |||
| 21302 | vmr, | |||
| 21303 | verbosity ); | |||
| 21304 | } | |||
| 21305 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 21306 | { | |||
| 21307 | ostringstream os; | |||
| 21308 | os << "ERROR: Continuum model " << name << " requires NO input\n" | |||
| 21309 | << "parameters for the model " << model << ",\n" | |||
| 21310 | << "but you specified " << parameters.nelem() << " parameters. " << "\n" | |||
| 21311 | << "This ambiguity can not be solved by arts.\n" | |||
| 21312 | << "Please see the arts user guide chapter 3.\n"; | |||
| 21313 | throw runtime_error(os.str()); | |||
| 21314 | } | |||
| 21315 | } | |||
| 21316 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 21317 | else if ( "N2-CIArotCKDMT252"==name ) | |||
| 21318 | { | |||
| 21319 | // data information about this continuum: | |||
| 21320 | // A. Borysow and L. Frommhold, The Astrophysical Journal, | |||
| 21321 | // Vol. 311, pp.1043-1057, 1986 | |||
| 21322 | ||||
| 21323 | if( abs_o2.sum() < -1. ) | |||
| 21324 | { | |||
| 21325 | ostringstream os; | |||
| 21326 | os << "Continuum/full model tag " << name | |||
| 21327 | << " requires O2-vmr, but no tag group contains O2!"; | |||
| 21328 | throw runtime_error(os.str()); | |||
| 21329 | } | |||
| 21330 | ||||
| 21331 | if( abs_h2o.sum() < -1. ) | |||
| 21332 | { | |||
| 21333 | ostringstream os; | |||
| 21334 | os << "Continuum/full model tag " << name | |||
| 21335 | << " requires H2O-vmr, but no tag group contains H2O!"; | |||
| 21336 | throw runtime_error(os.str()); | |||
| 21337 | } | |||
| 21338 | ||||
| 21339 | const int Nparam = 1; | |||
| 21340 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 21341 | { | |||
| 21342 | out3 << "Continuum model " << name << " is running with \n" | |||
| 21343 | << "user defined parameters according to model " << model << ".\n"; | |||
| 21344 | CKD_mt_250_CIArot_n2( pxsec, | |||
| 21345 | parameters[0], // scaling factor | |||
| 21346 | model, | |||
| 21347 | f_grid, | |||
| 21348 | abs_p, | |||
| 21349 | abs_t, | |||
| 21350 | vmr, | |||
| 21351 | abs_h2o, | |||
| 21352 | abs_o2, | |||
| 21353 | verbosity ); | |||
| 21354 | } | |||
| 21355 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 21356 | { | |||
| 21357 | ostringstream os; | |||
| 21358 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 21359 | << "parameters for the model " << model << ",\n" | |||
| 21360 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 21361 | throw runtime_error(os.str()); | |||
| 21362 | } | |||
| 21363 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 21364 | { | |||
| 21365 | out3 << "Continuum model " << name << " running with \n" | |||
| 21366 | << "the parameters for model " << model << ".\n"; | |||
| 21367 | CKD_mt_250_CIArot_n2( pxsec, | |||
| 21368 | 0.0, | |||
| 21369 | model, | |||
| 21370 | f_grid, | |||
| 21371 | abs_p, | |||
| 21372 | abs_t, | |||
| 21373 | vmr, | |||
| 21374 | abs_h2o, | |||
| 21375 | abs_o2, | |||
| 21376 | verbosity ); | |||
| 21377 | } | |||
| 21378 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 21379 | { | |||
| 21380 | ostringstream os; | |||
| 21381 | os << "ERROR: Continuum model " << name << " requires NO input\n" | |||
| 21382 | << "parameters for the model " << model << ",\n" | |||
| 21383 | << "but you specified " << parameters.nelem() << " parameters. " << "\n" | |||
| 21384 | << "This ambiguity can not be solved by arts.\n" | |||
| 21385 | << "Please see the arts user guide chapter 3.\n"; | |||
| 21386 | throw runtime_error(os.str()); | |||
| 21387 | } | |||
| 21388 | } | |||
| 21389 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 21390 | else if ( "N2-CIAfunCKDMT252"==name ) | |||
| 21391 | { | |||
| 21392 | // data information about this continuum: | |||
| 21393 | // Lafferty, W.J., A.M. Solodov,A. Weber, W.B. Olson and J._M. Hartmann, | |||
| 21394 | // Infrared collision-induced absorption by | |||
| 21395 | // N2 near 4.3 microns for atmospheric applications: | |||
| 21396 | // Measurements and emprirical modeling, | |||
| 21397 | // Appl. Optics, 35, 5911-5917, (1996) | |||
| 21398 | ||||
| 21399 | if( abs_o2.sum() < -1. ) | |||
| 21400 | { | |||
| 21401 | ostringstream os; | |||
| 21402 | os << "Continuum/full model tag " << name | |||
| 21403 | << " requires O2-vmr, but no tag group contains O2!"; | |||
| 21404 | throw runtime_error(os.str()); | |||
| 21405 | } | |||
| 21406 | ||||
| 21407 | if( abs_h2o.sum() < -1. ) | |||
| 21408 | { | |||
| 21409 | ostringstream os; | |||
| 21410 | os << "Continuum/full model tag " << name | |||
| 21411 | << " requires H2O-vmr, but no tag group contains H2O!"; | |||
| 21412 | throw runtime_error(os.str()); | |||
| 21413 | } | |||
| 21414 | ||||
| 21415 | const int Nparam = 1; | |||
| 21416 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 21417 | { | |||
| 21418 | out3 << "Continuum model " << name << " is running with \n" | |||
| 21419 | << "user defined parameters according to model " << model << ".\n"; | |||
| 21420 | CKD_mt_250_CIAfun_n2( pxsec, | |||
| 21421 | parameters[0], // scaling factor | |||
| 21422 | model, | |||
| 21423 | f_grid, | |||
| 21424 | abs_p, | |||
| 21425 | abs_t, | |||
| 21426 | vmr, | |||
| 21427 | abs_h2o, | |||
| 21428 | abs_o2, | |||
| 21429 | verbosity ); | |||
| 21430 | } | |||
| 21431 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 21432 | { | |||
| 21433 | ostringstream os; | |||
| 21434 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 21435 | << "parameters for the model " << model << ",\n" | |||
| 21436 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 21437 | throw runtime_error(os.str()); | |||
| 21438 | } | |||
| 21439 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 21440 | { | |||
| 21441 | out3 << "Continuum model " << name << " running with \n" | |||
| 21442 | << "the parameters for model " << model << ".\n"; | |||
| 21443 | CKD_mt_250_CIAfun_n2( pxsec, | |||
| 21444 | 0.0, | |||
| 21445 | model, | |||
| 21446 | f_grid, | |||
| 21447 | abs_p, | |||
| 21448 | abs_t, | |||
| 21449 | vmr, | |||
| 21450 | abs_h2o, | |||
| 21451 | abs_o2, | |||
| 21452 | verbosity ); | |||
| 21453 | } | |||
| 21454 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 21455 | { | |||
| 21456 | ostringstream os; | |||
| 21457 | os << "ERROR: Continuum model " << name << " requires NO input\n" | |||
| 21458 | << "parameters for the model " << model << ",\n" | |||
| 21459 | << "but you specified " << parameters.nelem() << " parameters. " << "\n" | |||
| 21460 | << "This ambiguity can not be solved by arts.\n" | |||
| 21461 | << "Please see the arts user guide chapter 3.\n"; | |||
| 21462 | throw runtime_error(os.str()); | |||
| 21463 | } | |||
| 21464 | } | |||
| 21465 | ||||
| 21466 | // ============= CO2 continuum ======================================================== | |||
| 21467 | else if ( "CO2-CKD241"==name ) | |||
| 21468 | { | |||
| 21469 | // data information about this continuum: | |||
| 21470 | // CKDv2.4.1 model at http://www.rtweb.aer.com/continuum_frame.html | |||
| 21471 | // This continuum accounts for the far wings of the many COS lines/bands since | |||
| 21472 | // the line is used with a cutoff in the line shape with +/- 25 cm^-1. | |||
| 21473 | // | |||
| 21474 | // specific continuum parameters and units: | |||
| 21475 | // OUTPUT | |||
| 21476 | // pxsec : [1/m], | |||
| 21477 | // INPUT | |||
| 21478 | // parameters[0] : continuum strength coefficient [1/m * 1/(Hz*Pa)²] | |||
| 21479 | // parameters[1] : continuum temperature exponent [1] | |||
| 21480 | // f_grid : [Hz] | |||
| 21481 | // abs_p : [Pa] | |||
| 21482 | // abs_t : [K] | |||
| 21483 | // vmr : [1] | |||
| 21484 | // | |||
| 21485 | const int Nparam = 1; | |||
| 21486 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 21487 | { | |||
| 21488 | out3 << "Continuum model " << name << " is running with \n" | |||
| 21489 | << "user defined parameters according to model " << model << ".\n"; | |||
| 21490 | CKD_241_co2( pxsec, | |||
| 21491 | parameters[0], // abs. scaling | |||
| 21492 | model, | |||
| 21493 | f_grid, | |||
| 21494 | abs_p, | |||
| 21495 | abs_t, | |||
| 21496 | vmr, | |||
| 21497 | verbosity ); | |||
| 21498 | } | |||
| 21499 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 21500 | { | |||
| 21501 | ostringstream os; | |||
| 21502 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 21503 | << "parameters for the model " << model << ",\n" | |||
| 21504 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 21505 | throw runtime_error(os.str()); | |||
| 21506 | } | |||
| 21507 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 21508 | { | |||
| 21509 | out3 << "Continuum model " << name << " running with \n" | |||
| 21510 | << "the parameters for model " << model << ".\n"; | |||
| 21511 | CKD_241_co2( pxsec, | |||
| 21512 | 0.00, | |||
| 21513 | model, | |||
| 21514 | f_grid, | |||
| 21515 | abs_p, | |||
| 21516 | abs_t, | |||
| 21517 | vmr, | |||
| 21518 | verbosity ); | |||
| 21519 | } | |||
| 21520 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 21521 | { | |||
| 21522 | ostringstream os; | |||
| 21523 | os << "ERROR: Continuum model " << name << " requires NO input\n" | |||
| 21524 | << "parameters for the model " << model << ",\n" | |||
| 21525 | << "but you specified " << parameters.nelem() << " parameters. " << "\n" | |||
| 21526 | << "This ambiguity can not be solved by arts.\n" | |||
| 21527 | << "Please see the arts user guide chapter 3.\n"; | |||
| 21528 | throw runtime_error(os.str()); | |||
| 21529 | } | |||
| 21530 | } | |||
| 21531 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 21532 | else if ( "CO2-CKDMT100"==name ) | |||
| 21533 | { | |||
| 21534 | // data information about this continuum: | |||
| 21535 | // CKD model at http://www.rtweb.aer.com/continuum_frame.html | |||
| 21536 | // This continuum accounts for the far wings of the many COS lines/bands since | |||
| 21537 | // the line is used with a cutoff in the line shape with +/- 25 cm^-1. | |||
| 21538 | // | |||
| 21539 | // specific continuum parameters and units: | |||
| 21540 | // OUTPUT | |||
| 21541 | // pxsec : [1/m], | |||
| 21542 | // INPUT | |||
| 21543 | // parameters[0] : continuum strength coefficient [1/m * 1/(Hz*Pa)²] | |||
| 21544 | // parameters[1] : continuum temperature exponent [1] | |||
| 21545 | // f_grid : [Hz] | |||
| 21546 | // abs_p : [Pa] | |||
| 21547 | // abs_t : [K] | |||
| 21548 | // vmr : [1] | |||
| 21549 | // | |||
| 21550 | const int Nparam = 1; | |||
| 21551 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 21552 | { | |||
| 21553 | out3 << "Continuum model " << name << " is running with \n" | |||
| 21554 | << "user defined parameters according to model " << model << ".\n"; | |||
| 21555 | CKD_mt_co2( pxsec, | |||
| 21556 | parameters[0], // abs. scaling | |||
| 21557 | model, | |||
| 21558 | f_grid, | |||
| 21559 | abs_p, | |||
| 21560 | abs_t, | |||
| 21561 | vmr, | |||
| 21562 | verbosity ); | |||
| 21563 | } | |||
| 21564 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 21565 | { | |||
| 21566 | ostringstream os; | |||
| 21567 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 21568 | << "parameters for the model " << model << ",\n" | |||
| 21569 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 21570 | throw runtime_error(os.str()); | |||
| 21571 | } | |||
| 21572 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 21573 | { | |||
| 21574 | out3 << "Continuum model " << name << " running with \n" | |||
| 21575 | << "the parameters for model " << model << ".\n"; | |||
| 21576 | CKD_mt_co2( pxsec, | |||
| 21577 | 0.00, | |||
| 21578 | model, | |||
| 21579 | f_grid, | |||
| 21580 | abs_p, | |||
| 21581 | abs_t, | |||
| 21582 | vmr, | |||
| 21583 | verbosity ); | |||
| 21584 | } | |||
| 21585 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 21586 | { | |||
| 21587 | ostringstream os; | |||
| 21588 | os << "ERROR: Continuum model " << name << " requires NO input\n" | |||
| 21589 | << "parameters for the model " << model << ",\n" | |||
| 21590 | << "but you specified " << parameters.nelem() << " parameters. " << "\n" | |||
| 21591 | << "This ambiguity can not be solved by arts.\n" | |||
| 21592 | << "Please see the arts user guide chapter 3.\n"; | |||
| 21593 | throw runtime_error(os.str()); | |||
| 21594 | } | |||
| 21595 | } | |||
| 21596 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 21597 | else if ( "CO2-CKDMT252"==name ) | |||
| 21598 | { | |||
| 21599 | // data information about this continuum: | |||
| 21600 | // CKD model at http://www.rtweb.aer.com/continuum_frame.html | |||
| 21601 | // This continuum accounts for the far wings of the many COS lines/bands since | |||
| 21602 | // the line is used with a cutoff in the line shape with +/- 25 cm^-1. | |||
| 21603 | // | |||
| 21604 | // specific continuum parameters and units: | |||
| 21605 | // OUTPUT | |||
| 21606 | // pxsec : [1/m], | |||
| 21607 | // INPUT | |||
| 21608 | // parameters[0] : continuum strength coefficient [1/m * 1/(Hz*Pa)²] | |||
| 21609 | // parameters[1] : continuum temperature exponent [1] | |||
| 21610 | // f_grid : [Hz] | |||
| 21611 | // abs_p : [Pa] | |||
| 21612 | // abs_t : [K] | |||
| 21613 | // vmr : [1] | |||
| 21614 | // | |||
| 21615 | const int Nparam = 1; | |||
| 21616 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 21617 | { | |||
| 21618 | out3 << "Continuum model " << name << " is running with \n" | |||
| 21619 | << "user defined parameters according to model " << model << ".\n"; | |||
| 21620 | CKD_mt_250_co2( pxsec, | |||
| 21621 | parameters[0], // abs. scaling | |||
| 21622 | model, | |||
| 21623 | f_grid, | |||
| 21624 | abs_p, | |||
| 21625 | abs_t, | |||
| 21626 | vmr, | |||
| 21627 | verbosity ); | |||
| 21628 | } | |||
| 21629 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 21630 | { | |||
| 21631 | ostringstream os; | |||
| 21632 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 21633 | << "parameters for the model " << model << ",\n" | |||
| 21634 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 21635 | throw runtime_error(os.str()); | |||
| 21636 | } | |||
| 21637 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 21638 | { | |||
| 21639 | out3 << "Continuum model " << name << " running with \n" | |||
| 21640 | << "the parameters for model " << model << ".\n"; | |||
| 21641 | CKD_mt_250_co2( pxsec, | |||
| 21642 | 0.00, | |||
| 21643 | model, | |||
| 21644 | f_grid, | |||
| 21645 | abs_p, | |||
| 21646 | abs_t, | |||
| 21647 | vmr, | |||
| 21648 | verbosity ); | |||
| 21649 | } | |||
| 21650 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 21651 | { | |||
| 21652 | ostringstream os; | |||
| 21653 | os << "ERROR: Continuum model " << name << " requires NO input\n" | |||
| 21654 | << "parameters for the model " << model << ",\n" | |||
| 21655 | << "but you specified " << parameters.nelem() << " parameters. " << "\n" | |||
| 21656 | << "This ambiguity can not be solved by arts.\n" | |||
| 21657 | << "Please see the arts user guide chapter 3.\n"; | |||
| 21658 | throw runtime_error(os.str()); | |||
| 21659 | } | |||
| 21660 | } | |||
| 21661 | ||||
| 21662 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 21663 | else if ( "CO2-SelfContPWR93"==name ) | |||
| 21664 | { | |||
| 21665 | // data information about this continuum: | |||
| 21666 | // P. W. Rosenkranz Chapter 2, pp 74, in M. A. Janssen, | |||
| 21667 | // "Atmospheric Remote Sensing by Microwave Radiometry", | |||
| 21668 | // John Wiley & Sons, Inc., 1993, ISBN 0-471-62891-3 | |||
| 21669 | // | |||
| 21670 | // specific continuum parameters and units: | |||
| 21671 | // OUTPUT | |||
| 21672 | // pxsec : [1/m], | |||
| 21673 | // INPUT | |||
| 21674 | // parameters[0] : continuum strength coefficient [1/m * 1/(Hz*Pa)²] | |||
| 21675 | // parameters[1] : continuum temperature exponent [1] | |||
| 21676 | // f_grid : [Hz] | |||
| 21677 | // abs_p : [Pa] | |||
| 21678 | // abs_t : [K] | |||
| 21679 | // vmr : [1] | |||
| 21680 | // | |||
| 21681 | const int Nparam = 2; | |||
| 21682 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 21683 | { | |||
| 21684 | out3 << "Continuum model " << name << " is running with \n" | |||
| 21685 | << "user defined parameters according to model " << model << ".\n"; | |||
| 21686 | Rosenkranz_CO2_self_continuum( pxsec, | |||
| 21687 | parameters[0], // coefficient | |||
| 21688 | parameters[1], // temp. exponent | |||
| 21689 | model, | |||
| 21690 | f_grid, | |||
| 21691 | abs_p, | |||
| 21692 | abs_t, | |||
| 21693 | vmr, | |||
| 21694 | verbosity ); | |||
| 21695 | } | |||
| 21696 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 21697 | { | |||
| 21698 | ostringstream os; | |||
| 21699 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 21700 | << "parameters for the model " << model << ",\n" | |||
| 21701 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 21702 | throw runtime_error(os.str()); | |||
| 21703 | } | |||
| 21704 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 21705 | { | |||
| 21706 | out3 << "Continuum model " << name << " running with \n" | |||
| 21707 | << "the parameters for model " << model << ".\n"; | |||
| 21708 | Rosenkranz_CO2_self_continuum( pxsec, | |||
| 21709 | 0.00, | |||
| 21710 | 0.00, | |||
| 21711 | model, | |||
| 21712 | f_grid, | |||
| 21713 | abs_p, | |||
| 21714 | abs_t, | |||
| 21715 | vmr, | |||
| 21716 | verbosity ); | |||
| 21717 | } | |||
| 21718 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 21719 | { | |||
| 21720 | ostringstream os; | |||
| 21721 | os << "ERROR: Continuum model " << name << " requires NO input\n" | |||
| 21722 | << "parameters for the model " << model << ",\n" | |||
| 21723 | << "but you specified " << parameters.nelem() << " parameters. " << "\n" | |||
| 21724 | << "This ambiguity can not be solved by arts.\n" | |||
| 21725 | << "Please see the arts user guide chapter 3.\n"; | |||
| 21726 | throw runtime_error(os.str()); | |||
| 21727 | } | |||
| 21728 | } | |||
| 21729 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 21730 | else if ( "CO2-ForeignContPWR93"==name ) | |||
| 21731 | { | |||
| 21732 | // data information about this continuum: | |||
| 21733 | // P. W. Rosenkranz Chapter 2, pp 74, in M. A. Janssen, | |||
| 21734 | // "Atmospheric Remote Sensing by Microwave Radiometry", | |||
| 21735 | // John Wiley & Sons, Inc., 1993, ISBN 0-471-62891-3 | |||
| 21736 | // | |||
| 21737 | // specific continuum parameters and units: | |||
| 21738 | // OUTPUT | |||
| 21739 | // pxsec : [1/m], | |||
| 21740 | // INPUT | |||
| 21741 | // parameters[0] : continuum strength coefficient [1/m * 1/(Hz*Pa)²] | |||
| 21742 | // parameters[1] : continuum temperature exponent [1] | |||
| 21743 | // f_grid : [Hz] | |||
| 21744 | // abs_p : [Pa] | |||
| 21745 | // abs_t : [K] | |||
| 21746 | // abs_n2 : [1] | |||
| 21747 | // vmr : [1] | |||
| 21748 | // | |||
| 21749 | ||||
| 21750 | if( abs_n2.sum() < -1. ) | |||
| 21751 | { | |||
| 21752 | ostringstream os; | |||
| 21753 | os << "Continuum/full model tag " << name | |||
| 21754 | << " requires N2-vmr, but no tag group contains N2!"; | |||
| 21755 | throw runtime_error(os.str()); | |||
| 21756 | } | |||
| 21757 | ||||
| 21758 | const int Nparam = 2; | |||
| 21759 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 21760 | { | |||
| 21761 | out3 << "Continuum model " << name << " is running with \n" | |||
| 21762 | << "user defined parameters according to model " << model << ".\n"; | |||
| 21763 | Rosenkranz_CO2_foreign_continuum( pxsec, | |||
| 21764 | parameters[0], | |||
| 21765 | parameters[1], | |||
| 21766 | model, | |||
| 21767 | f_grid, | |||
| 21768 | abs_p, | |||
| 21769 | abs_t, | |||
| 21770 | abs_n2, | |||
| 21771 | vmr, | |||
| 21772 | verbosity ); | |||
| 21773 | } | |||
| 21774 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 21775 | { | |||
| 21776 | ostringstream os; | |||
| 21777 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 21778 | << "parameters for the model " << model << ",\n" | |||
| 21779 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 21780 | throw runtime_error(os.str()); | |||
| 21781 | } | |||
| 21782 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 21783 | { | |||
| 21784 | out3 << "Continuum model " << name << " running with \n" | |||
| 21785 | << "the parameters for model " << model << ".\n"; | |||
| 21786 | Rosenkranz_CO2_foreign_continuum( pxsec, | |||
| 21787 | 0.00, | |||
| 21788 | 0.00, | |||
| 21789 | model, | |||
| 21790 | f_grid, | |||
| 21791 | abs_p, | |||
| 21792 | abs_t, | |||
| 21793 | abs_n2, | |||
| 21794 | vmr, | |||
| 21795 | verbosity ); | |||
| 21796 | } | |||
| 21797 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 21798 | { | |||
| 21799 | ostringstream os; | |||
| 21800 | os << "ERROR: Continuum model " << name << " requires NO input\n" | |||
| 21801 | << "parameters for the model " << model << ",\n" | |||
| 21802 | << "but you specified " << parameters.nelem() << " parameters. " << "\n" | |||
| 21803 | << "This ambiguity can not be solved by arts.\n" | |||
| 21804 | << "Please see the arts user guide chapter 3.\n"; | |||
| 21805 | throw runtime_error(os.str()); | |||
| 21806 | } | |||
| 21807 | } | |||
| 21808 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 21809 | else if ( "CO2-SelfContHo66"==name ) | |||
| 21810 | { | |||
| 21811 | // data information about this continuum: | |||
| 21812 | // Reference: Ho, Kaufman and Thaddeus, "Laboratory measurements of | |||
| 21813 | // microwave absorption in models of the atmosphere of Venus", JGR, 1966. | |||
| 21814 | // | |||
| 21815 | // specific continuum parameters and units: | |||
| 21816 | // OUTPUT | |||
| 21817 | // pxsec : [1/m], | |||
| 21818 | // INPUT | |||
| 21819 | // parameters[0] : continuum strength coefficient [1/m * 1/(Hz*Pa)²] | |||
| 21820 | // parameters[1] : continuum temperature exponent [1] | |||
| 21821 | // f_grid : [Hz] | |||
| 21822 | // abs_p : [Pa] | |||
| 21823 | // abs_t : [K] | |||
| 21824 | // vmr : [1] | |||
| 21825 | // | |||
| 21826 | const int Nparam = 2; | |||
| 21827 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 21828 | { | |||
| 21829 | out3 << "Continuum model " << name << " is running with \n" | |||
| 21830 | << "user defined parameters according to model " << model << ".\n"; | |||
| 21831 | Ho66_CO2_self_continuum( pxsec, | |||
| 21832 | parameters[0], // coefficient | |||
| 21833 | parameters[1], // temp. exponent | |||
| 21834 | model, | |||
| 21835 | f_grid, | |||
| 21836 | abs_p, | |||
| 21837 | abs_t, | |||
| 21838 | vmr, | |||
| 21839 | verbosity ); | |||
| 21840 | } | |||
| 21841 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 21842 | { | |||
| 21843 | ostringstream os; | |||
| 21844 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 21845 | << "parameters for the model " << model << ",\n" | |||
| 21846 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 21847 | throw runtime_error(os.str()); | |||
| 21848 | } | |||
| 21849 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 21850 | { | |||
| 21851 | out3 << "Continuum model " << name << " running with \n" | |||
| 21852 | << "the parameters for model " << model << ".\n"; | |||
| 21853 | Ho66_CO2_self_continuum( pxsec, | |||
| 21854 | 0.00, | |||
| 21855 | 0.00, | |||
| 21856 | model, | |||
| 21857 | f_grid, | |||
| 21858 | abs_p, | |||
| 21859 | abs_t, | |||
| 21860 | vmr, | |||
| 21861 | verbosity ); | |||
| 21862 | } | |||
| 21863 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 21864 | { | |||
| 21865 | ostringstream os; | |||
| 21866 | os << "ERROR: Continuum model " << name << " requires NO input\n" | |||
| 21867 | << "parameters for the model " << model << ",\n" | |||
| 21868 | << "but you specified " << parameters.nelem() << " parameters. " << "\n" | |||
| 21869 | << "This ambiguity can not be solved by arts.\n" | |||
| 21870 | << "Please see the arts user guide chapter 3.\n"; | |||
| 21871 | throw runtime_error(os.str()); | |||
| 21872 | } | |||
| 21873 | } | |||
| 21874 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 21875 | else if ( "CO2-ForeignContHo66"==name ) | |||
| 21876 | { | |||
| 21877 | // data information about this continuum: | |||
| 21878 | // Reference: Ho, Kaufman and Thaddeus, "Laboratory measurements of | |||
| 21879 | // microwave absorption in models of the atmosphere of Venus", JGR, 1966. | |||
| 21880 | // | |||
| 21881 | // specific continuum parameters and units: | |||
| 21882 | // OUTPUT | |||
| 21883 | // pxsec : [1/m], | |||
| 21884 | // INPUT | |||
| 21885 | // parameters[0] : continuum strength coefficient [1/m * 1/(Hz*Pa)²] | |||
| 21886 | // parameters[1] : continuum temperature exponent [1] | |||
| 21887 | // f_grid : [Hz] | |||
| 21888 | // abs_p : [Pa] | |||
| 21889 | // abs_t : [K] | |||
| 21890 | // abs_n2 : [1] | |||
| 21891 | // vmr : [1] | |||
| 21892 | // | |||
| 21893 | ||||
| 21894 | if( abs_n2.sum() < -1. ) | |||
| 21895 | { | |||
| 21896 | ostringstream os; | |||
| 21897 | os << "Continuum/full model tag " << name | |||
| 21898 | << " requires N2-vmr, but no tag group contains N2!"; | |||
| 21899 | throw runtime_error(os.str()); | |||
| 21900 | } | |||
| 21901 | ||||
| 21902 | const int Nparam = 2; | |||
| 21903 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 21904 | { | |||
| 21905 | out3 << "Continuum model " << name << " is running with \n" | |||
| 21906 | << "user defined parameters according to model " << model << ".\n"; | |||
| 21907 | Ho66_CO2_foreign_continuum( pxsec, | |||
| 21908 | parameters[0], | |||
| 21909 | parameters[1], | |||
| 21910 | model, | |||
| 21911 | f_grid, | |||
| 21912 | abs_p, | |||
| 21913 | abs_t, | |||
| 21914 | abs_n2, | |||
| 21915 | vmr, | |||
| 21916 | verbosity ); | |||
| 21917 | } | |||
| 21918 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 21919 | { | |||
| 21920 | ostringstream os; | |||
| 21921 | os << "Continuum model " << name << " requires " << Nparam << " input\n" | |||
| 21922 | << "parameters for the model " << model << ",\n" | |||
| 21923 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 21924 | throw runtime_error(os.str()); | |||
| 21925 | } | |||
| 21926 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 21927 | { | |||
| 21928 | out3 << "Continuum model " << name << " running with \n" | |||
| 21929 | << "the parameters for model " << model << ".\n"; | |||
| 21930 | Ho66_CO2_foreign_continuum( pxsec, | |||
| 21931 | 0.00, | |||
| 21932 | 0.00, | |||
| 21933 | model, | |||
| 21934 | f_grid, | |||
| 21935 | abs_p, | |||
| 21936 | abs_t, | |||
| 21937 | abs_n2, | |||
| 21938 | vmr, | |||
| 21939 | verbosity ); | |||
| 21940 | } | |||
| 21941 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 21942 | { | |||
| 21943 | ostringstream os; | |||
| 21944 | os << "ERROR: Continuum model " << name << " requires NO input\n" | |||
| 21945 | << "parameters for the model " << model << ",\n" | |||
| 21946 | << "but you specified " << parameters.nelem() << " parameters. " << "\n" | |||
| 21947 | << "This ambiguity can not be solved by arts.\n" | |||
| 21948 | << "Please see the arts user guide chapter 3.\n"; | |||
| 21949 | throw runtime_error(os.str()); | |||
| 21950 | } | |||
| 21951 | } | |||
| 21952 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
| 21953 | // ============= cloud and fog absorption from MPM93 ================================== | |||
| 21954 | else if ( "liquidcloud-MPM93"==name ) | |||
| 21955 | { | |||
| 21956 | // Suspended water droplet absorption parameterization from MPM93 model | |||
| 21957 | // H. J. Liebe and G. A. Hufford and M. G. Cotton, | |||
| 21958 | // "Propagation modeling of moist air and suspended water/ice | |||
| 21959 | // particles at frequencies below 1000 GHz", | |||
| 21960 | // AGARD 52nd Specialists Meeting of the Electromagnetic Wave | |||
| 21961 | // Propagation Panel, Palma de Mallorca, Spain, 1993, May 17-21 | |||
| 21962 | // | |||
| 21963 | // specific continuum parameters and units: | |||
| 21964 | // OUTPUT | |||
| 21965 | // pxsec : [1/m], | |||
| 21966 | // INPUT | |||
| 21967 | // parameters[0] : [1] | |||
| 21968 | // parameters[1] : [1] | |||
| 21969 | // parameters[2] : [1] | |||
| 21970 | // model : [1] | |||
| 21971 | // f_grid : [Hz] | |||
| 21972 | // abs_p : [Pa] | |||
| 21973 | // abs_t : [K] | |||
| 21974 | // vmr : [1] | |||
| 21975 | // | |||
| 21976 | // liquid water droplet parameters: | |||
| 21977 | // suspended water droplet density range: 0-5 g/m³ | |||
| 21978 | // | |||
| 21979 | // valid atmospheric condition: | |||
| 21980 | // temperature : 210 to 373 K | |||
| 21981 | // | |||
| 21982 | for ( Index s=0; s<f_grid.nelem(); ++s ) | |||
| 21983 | { | |||
| 21984 | if( f_grid[s] > 1e12 ) | |||
| 21985 | { | |||
| 21986 | ostringstream os; | |||
| 21987 | os << "Liquid cloud absorption model MPM93 only valid at\n" | |||
| 21988 | "frequencies up to 1THz. Yours are above."; | |||
| 21989 | throw runtime_error(os.str()); | |||
| 21990 | } | |||
| 21991 | } | |||
| 21992 | for ( Index s=0; s<abs_t.nelem(); ++s ) | |||
| 21993 | { | |||
| 21994 | if( ( abs_t[s] < 210. || abs_t[s] > 373.) && | |||
| 21995 | abs(vmr[s])((vmr[s]) >= 0 ? (vmr[s]) : -(vmr[s])) > LIQUID_AND_ICE_TREAT_AS_ZERO ) | |||
| 21996 | { | |||
| 21997 | ostringstream os; | |||
| 21998 | os << "Liquid cloud absorption model MPM93 only valid at\n" | |||
| 21999 | << "temperatures between 210 and 373K.\n" | |||
| 22000 | << "LWC values outside this temperature range must be < " | |||
| 22001 | << LIQUID_AND_ICE_TREAT_AS_ZERO << " kg/m3.\n" | |||
| 22002 | << "Your value at " << abs_t[s] << "K is: " << vmr[s] << " kg/m3."; | |||
| 22003 | throw runtime_error(os.str()); | |||
| 22004 | } | |||
| 22005 | } | |||
| 22006 | ||||
| 22007 | const int Nparam = 3; | |||
| 22008 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // -------------------- | |||
| 22009 | { | |||
| 22010 | MPM93WaterDropletAbs(pxsec, | |||
| 22011 | parameters[0], // scaling factror | |||
| 22012 | parameters[1], // scaling factror | |||
| 22013 | parameters[2], // scaling factror | |||
| 22014 | model, // model option | |||
| 22015 | f_grid, | |||
| 22016 | abs_p, | |||
| 22017 | abs_t, | |||
| 22018 | vmr, | |||
| 22019 | verbosity); | |||
| 22020 | } | |||
| 22021 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 22022 | { | |||
| 22023 | ostringstream os; | |||
| 22024 | os << "MPM93 liquid water cloud absorption model " << name << " requires\n" | |||
| 22025 | << Nparam << " input parameter for the model " << model << ",\n" | |||
| 22026 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 22027 | throw runtime_error(os.str()); | |||
| 22028 | } | |||
| 22029 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 22030 | { | |||
| 22031 | out3 << "MPM93 liquid water cloud absorption model " << name << " running with \n" | |||
| 22032 | << "the parameter for model " << model << ".\n"; | |||
| 22033 | MPM93WaterDropletAbs(pxsec, | |||
| 22034 | 0.000, // scaling factror | |||
| 22035 | 0.000, // scaling factror | |||
| 22036 | 0.000, // scaling factror | |||
| 22037 | model, // model option | |||
| 22038 | f_grid, | |||
| 22039 | abs_p, | |||
| 22040 | abs_t, | |||
| 22041 | vmr, | |||
| 22042 | verbosity); | |||
| 22043 | } | |||
| 22044 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 22045 | { | |||
| 22046 | ostringstream os; | |||
| 22047 | os << "ERROR: MPM93 liquid water cloud absorption model " << name << " requires NO input\n" | |||
| 22048 | << "parameters for the model " << model << ",\n" | |||
| 22049 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 22050 | << "This ambiguity can not be solved by arts.\n" | |||
| 22051 | << "Please see the arts user guide chapter 4.\n"; | |||
| 22052 | throw runtime_error(os.str()); | |||
| 22053 | } | |||
| 22054 | } | |||
| 22055 | ||||
| 22056 | // ============= cloud and fog absorption from ELL07 ================================ | |||
| 22057 | else if ( "liquidcloud-ELL07"==name ) | |||
| 22058 | { | |||
| 22059 | // Suspended water droplet absorption parameterization from ELL07 model | |||
| 22060 | // W. J. Ellison | |||
| 22061 | // "Permittivity of Pure Water, at Standard Atmospheric Pressure, over the | |||
| 22062 | // Frequency Range 0-25 THz and Temperature Range 0-100C" | |||
| 22063 | // J. Phys. Chem. Ref. Data, Vol. 36, No. 1, 2007 | |||
| 22064 | ||||
| 22065 | // specific continuum parameters and units: | |||
| 22066 | // OUTPUT | |||
| 22067 | // pxsec : [1/m], | |||
| 22068 | // INPUT | |||
| 22069 | // model : [1] | |||
| 22070 | // f_grid : [Hz] | |||
| 22071 | // abs_p : [Pa] | |||
| 22072 | // abs_t : [K] | |||
| 22073 | // vmr : [1] | |||
| 22074 | // | |||
| 22075 | // liquid water droplet parameters: | |||
| 22076 | // suspended water droplet density range: 0-5 g/m³ | |||
| 22077 | // | |||
| 22078 | // valid atmospheric condition: | |||
| 22079 | // temperature : 210 to 373 K | |||
| 22080 | // | |||
| 22081 | for ( Index s=0; s<f_grid.nelem(); ++s ) | |||
| 22082 | { | |||
| 22083 | if( f_grid[s] > 25e12 ) | |||
| 22084 | { | |||
| 22085 | ostringstream os; | |||
| 22086 | os << "Liquid cloud absorption model ELL07 only valid at\n" | |||
| 22087 | "frequencies up to 25THz. Yours are above."; | |||
| 22088 | throw runtime_error(os.str()); | |||
| 22089 | } | |||
| 22090 | } | |||
| 22091 | for ( Index s=0; s<abs_t.nelem(); ++s ) | |||
| 22092 | { | |||
| 22093 | if( ( abs_t[s] < 210. || abs_t[s] > 373.) && | |||
| 22094 | abs(vmr[s])((vmr[s]) >= 0 ? (vmr[s]) : -(vmr[s])) > LIQUID_AND_ICE_TREAT_AS_ZERO ) | |||
| 22095 | { | |||
| 22096 | ostringstream os; | |||
| 22097 | os << "Liquid cloud absorption model ELL07 only valid at\n" | |||
| 22098 | << "temperatures between 210 and 373K.\n" | |||
| 22099 | << "LWC values outside this temperature range must be < " | |||
| 22100 | << LIQUID_AND_ICE_TREAT_AS_ZERO << " kg/m3.\n" | |||
| 22101 | << "Your value at " << abs_t[s] << "K is: " << vmr[s] << " kg/m3."; | |||
| 22102 | throw runtime_error(os.str()); | |||
| 22103 | } | |||
| 22104 | } | |||
| 22105 | ||||
| 22106 | if ( (model == "ELL07") && (parameters.nelem() == 0) ) // -------------------- | |||
| 22107 | { | |||
| 22108 | ELL07WaterDropletAbs(pxsec, | |||
| 22109 | model, // model option | |||
| 22110 | f_grid, | |||
| 22111 | abs_p, | |||
| 22112 | abs_t, | |||
| 22113 | vmr, | |||
| 22114 | verbosity); | |||
| 22115 | } | |||
| 22116 | else if ( (model == "ELL07") && (parameters.nelem() != 0) ) // -------------------- | |||
| 22117 | { | |||
| 22118 | ostringstream os; | |||
| 22119 | os << "ERROR: ELL07 liquid water cloud absorption model " << name << " requires NO input\n" | |||
| 22120 | << "parameters for the model " << model << ",\n" | |||
| 22121 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 22122 | << "This ambiguity can not be solved by arts.\n" | |||
| 22123 | << "Please see the arts user guide chapter 4."; | |||
| 22124 | throw runtime_error(os.str()); | |||
| 22125 | } | |||
| 22126 | else | |||
| 22127 | { | |||
| 22128 | ostringstream os; | |||
| 22129 | os << "ERROR: ELL07 liquid water cloud absorption model " << name | |||
| 22130 | << " has no model " << model; | |||
| 22131 | throw runtime_error(os.str()); | |||
| 22132 | } | |||
| 22133 | } | |||
| 22134 | ||||
| 22135 | // ============= ice particle absorption from MPM93 =================================== | |||
| 22136 | else if ( "icecloud-MPM93"==name ) | |||
| 22137 | { | |||
| 22138 | // Ice particle absorption parameterization from MPM93 model | |||
| 22139 | // H. J. Liebe and G. A. Hufford and M. G. Cotton, | |||
| 22140 | // "Propagation modeling of moist air and suspended water/ice | |||
| 22141 | // particles at frequencies below 1000 GHz", | |||
| 22142 | // AGARD 52nd Specialists Meeting of the Electromagnetic Wave | |||
| 22143 | // Propagation Panel, Palma de Mallorca, Spain, 1993, May 17-21 | |||
| 22144 | // | |||
| 22145 | // specific continuum parameters and units: | |||
| 22146 | // OUTPUT | |||
| 22147 | // pxsec : [1/m], | |||
| 22148 | // INPUT | |||
| 22149 | // parameters[0] : [1] | |||
| 22150 | // parameters[1] : [1] | |||
| 22151 | // parameters[2] : [1] | |||
| 22152 | // model : [1] | |||
| 22153 | // f_grid : [Hz] | |||
| 22154 | // abs_p : [Pa] | |||
| 22155 | // abs_t : [K] | |||
| 22156 | // vmr : [1] | |||
| 22157 | // | |||
| 22158 | // ice crystal parameters: | |||
| 22159 | // suspended water droplet density range: 0-10 g/m³ | |||
| 22160 | // specific droplet weight value: 1 g/cm³ | |||
| 22161 | // | |||
| 22162 | // valid atmospheric condition: | |||
| 22163 | // temperature : 233 to 323 K | |||
| 22164 | // relative humidity: 1 to 100 % | |||
| 22165 | // | |||
| 22166 | for ( Index s=0; s<f_grid.nelem(); ++s ) | |||
| 22167 | { | |||
| 22168 | if( f_grid[s] > 1e12 ) | |||
| 22169 | { | |||
| 22170 | ostringstream os; | |||
| 22171 | os << "Ice cloud absorption model MPM93 only valid at\n" | |||
| 22172 | "frequencies up to 1THz. Yours are above."; | |||
| 22173 | throw runtime_error(os.str()); | |||
| 22174 | } | |||
| 22175 | } | |||
| 22176 | ||||
| 22177 | const int Nparam = 3; | |||
| 22178 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // --------------------- | |||
| 22179 | { | |||
| 22180 | MPM93IceCrystalAbs(pxsec, | |||
| 22181 | parameters[0], // scaling factror | |||
| 22182 | parameters[1], // scaling factror | |||
| 22183 | parameters[2], // scaling factror | |||
| 22184 | model, // model option | |||
| 22185 | f_grid, | |||
| 22186 | abs_p, | |||
| 22187 | abs_t, | |||
| 22188 | vmr, | |||
| 22189 | verbosity); | |||
| 22190 | } | |||
| 22191 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // ---------------- | |||
| 22192 | { | |||
| 22193 | ostringstream os; | |||
| 22194 | os << "MPM93 ice water cloud absorption model " << name << " requires \n" | |||
| 22195 | << Nparam << " input parameter for the model " << model << ",\n" | |||
| 22196 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 22197 | throw runtime_error(os.str()); | |||
| 22198 | } | |||
| 22199 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 22200 | { | |||
| 22201 | MPM93IceCrystalAbs(pxsec, | |||
| 22202 | 0.000, // scaling factror | |||
| 22203 | 0.000, // scaling factror | |||
| 22204 | 0.000, // scaling factror | |||
| 22205 | model, // model option | |||
| 22206 | f_grid, | |||
| 22207 | abs_p, | |||
| 22208 | abs_t, | |||
| 22209 | vmr, | |||
| 22210 | verbosity); | |||
| 22211 | } | |||
| 22212 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 22213 | { | |||
| 22214 | ostringstream os; | |||
| 22215 | os << "ERROR: MPM93 ice water cloud absorption model " << name << " requires NO input\n" | |||
| 22216 | << "parameters for the model " << model << ",\n" | |||
| 22217 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 22218 | << "This ambiguity can not be solved by arts.\n" | |||
| 22219 | << "Please see the arts user guide chapter 4.\n"; | |||
| 22220 | throw runtime_error(os.str()); | |||
| 22221 | } | |||
| 22222 | } | |||
| 22223 | ||||
| 22224 | // ============= rain extinction from MPM93 =========================================== | |||
| 22225 | else if ( "rain-MPM93"==name ) | |||
| 22226 | { | |||
| 22227 | // Rain extinction parameterization from MPM93 model, described in | |||
| 22228 | // H. J. Liebe, | |||
| 22229 | // "MPM - An Atmospheric Millimeter-Wave Propagation Model", | |||
| 22230 | // Int. J. Infrared and Millimeter Waves, vol. 10(6), | |||
| 22231 | // pp. 631-650, 1989 | |||
| 22232 | // and based on | |||
| 22233 | // Olsen, R.L., D.V. Rogers, and D. B. Hodge, "The aR^b relation in the | |||
| 22234 | // calculation of rain attenuation", IEEE Trans. Antennas Propagat., | |||
| 22235 | // vol. AP-26, pp. 318-329, 1978. | |||
| 22236 | // | |||
| 22237 | // specific continuum parameters and units: | |||
| 22238 | // OUTPUT | |||
| 22239 | // pxsec : [1/m], | |||
| 22240 | // INPUT | |||
| 22241 | // parameters[0] : [1] | |||
| 22242 | // parameters[1] : [1] | |||
| 22243 | // parameters[2] : [1] | |||
| 22244 | // model : [1] | |||
| 22245 | // f_grid : [Hz] | |||
| 22246 | // abs_p : [Pa] | |||
| 22247 | // abs_t : [K] | |||
| 22248 | // vmr : [kg/m2/s] | |||
| 22249 | // | |||
| 22250 | // rain parameters: | |||
| 22251 | // rain rate range: 0-150 mm/h (=0-0.42 kg/m2/s) | |||
| 22252 | // | |||
| 22253 | // valid atmospheric condition: | |||
| 22254 | // temperature : (preferably above 273 K...) | |||
| 22255 | // | |||
| 22256 | for ( Index s=0; s<f_grid.nelem(); ++s ) | |||
| 22257 | { | |||
| 22258 | if( f_grid[s] > 1e12 ) | |||
| 22259 | { | |||
| 22260 | ostringstream os; | |||
| 22261 | os << "Rain absorption model MPM93 only valid at\n" | |||
| 22262 | "frequencies up to 1THz. Yours is above."; | |||
| 22263 | throw runtime_error(os.str()); | |||
| 22264 | } | |||
| 22265 | } | |||
| 22266 | const int Nparam = 3; | |||
| 22267 | if ( (model == "user") && (parameters.nelem() == Nparam) ) // ------------------------- | |||
| 22268 | { | |||
| 22269 | out3 << "MPM93 rain extinction model " << name << " is running with \n" | |||
| 22270 | << "user defined parameters according to model " << model << ".\n"; | |||
| 22271 | MPM93RainExt(pxsec, | |||
| 22272 | parameters[0], // scaling factor | |||
| 22273 | parameters[1], // scaling factor | |||
| 22274 | parameters[2], // scaling factor | |||
| 22275 | model, // model option | |||
| 22276 | f_grid, | |||
| 22277 | abs_p, | |||
| 22278 | abs_t, | |||
| 22279 | vmr, | |||
| 22280 | verbosity); | |||
| 22281 | } | |||
| 22282 | else if ( (model == "user") && (parameters.nelem() != Nparam) ) // -------------------- | |||
| 22283 | { | |||
| 22284 | ostringstream os; | |||
| 22285 | os << "MPM93 rain extinction model " << name << " requires \n" | |||
| 22286 | << Nparam << " input parameter for the model " << model << ",\n" | |||
| 22287 | << "but you specified " << parameters.nelem() << " parameters.\n"; | |||
| 22288 | throw runtime_error(os.str()); | |||
| 22289 | } | |||
| 22290 | else if ( (model != "user") && (parameters.nelem() == 0) ) // -------------------- | |||
| 22291 | { | |||
| 22292 | out3 << "MPM93 rain extinction model " << name << " running with \n" | |||
| 22293 | << "the parameter for model " << model << ".\n"; | |||
| 22294 | MPM93RainExt(pxsec, | |||
| 22295 | 0.000, // scaling factor | |||
| 22296 | 0.000, // scaling factor | |||
| 22297 | 0.000, // scaling factor | |||
| 22298 | model, // model option | |||
| 22299 | f_grid, | |||
| 22300 | abs_p, | |||
| 22301 | abs_t, | |||
| 22302 | vmr, | |||
| 22303 | verbosity); | |||
| 22304 | } | |||
| 22305 | else if ( (model != "user") && (parameters.nelem() != 0) ) // -------------------- | |||
| 22306 | { | |||
| 22307 | ostringstream os; | |||
| 22308 | os << "ERROR: MPM93 rain extinction model " << name << " requires NO input\n" | |||
| 22309 | << "parameters for the model " << model << ",\n" | |||
| 22310 | << "but you specified " << parameters.nelem() << " parameters.\n" | |||
| 22311 | << "This ambiguity can not be solved by arts.\n" | |||
| 22312 | << "Please see the arts user guide chapter 4.\n"; | |||
| 22313 | throw runtime_error(os.str()); | |||
| 22314 | } | |||
| 22315 | } | |||
| 22316 | else // ----------------------------------------------------------------------- | |||
| 22317 | { | |||
| 22318 | // none of the continuum or full model tags were selected -> error message. | |||
| 22319 | ostringstream os; | |||
| 22320 | os << "ERROR: Continuum/ full model tag `" << name << "' not yet implemented in arts!"; | |||
| 22321 | throw runtime_error(os.str()); | |||
| 22322 | } | |||
| 22323 | ||||
| 22324 | // We have to divide the result from the internal continuum model by | |||
| 22325 | // the number density n to convert it from pseudo cross section to a | |||
| 22326 | // true cross section. | |||
| 22327 | ||||
| 22328 | // Boltzmann constant | |||
| 22329 | extern const Numeric BOLTZMAN_CONST; | |||
| 22330 | ||||
| 22331 | // Loop all pressures: | |||
| 22332 | for ( Index i=0; i<abs_p.nelem(); ++i ) | |||
| 22333 | { | |||
| 22334 | const Numeric p_i = abs_p[i]; | |||
| 22335 | const Numeric t_i = abs_t[i]; | |||
| 22336 | ||||
| 22337 | // Calculate total number density from pressure and temperature. | |||
| 22338 | // n = n0*T0/p0 * p/T or n = p/kB/t, ideal gas law | |||
| 22339 | const Numeric n = p_i / BOLTZMAN_CONST / t_i; | |||
| 22340 | ||||
| 22341 | // We add to the output variable xsec here, previous content is | |||
| 22342 | // not overwritten! | |||
| 22343 | pxsec(joker,i) /= n; | |||
| 22344 | xsec(joker,i) += pxsec(joker,i); | |||
| 22345 | } | |||
| 22346 | } | |||
| 22347 | ||||
| 22348 | // ################################################################################# | |||
| 22349 | ||||
| 22350 | /** | |||
| 22351 | An auxiliary functions that checks if a given continuum model is | |||
| 22352 | listed in species_data.cc. This is just in order to verify that this | |||
| 22353 | really represents a valid continuum model. | |||
| 22354 | ||||
| 22355 | The given name should be something like | |||
| 22356 | 'H2O-ContStandardSelf'. The function simply checks if there is a | |||
| 22357 | species H2O with an isotopologue ContStandardSelf. | |||
| 22358 | ||||
| 22359 | For user-friendliness, the function also compiles a list of allowed | |||
| 22360 | continuum models and gives this as an error message if the model is | |||
| 22361 | not found. | |||
| 22362 | ||||
| 22363 | The function has no return value, since, if the name does not match | |||
| 22364 | a valid model an error is thrown anyway. | |||
| 22365 | ||||
| 22366 | \param name The name of the continuum model to check. | |||
| 22367 | ||||
| 22368 | \throw runtime_error The model does not exist. | |||
| 22369 | ||||
| 22370 | \author Stefan Buehler | |||
| 22371 | \date 2001-03-12 | |||
| 22372 | */ | |||
| 22373 | void check_continuum_model(const String& name) | |||
| 22374 | { | |||
| 22375 | // The species lookup data: | |||
| 22376 | using global_data::species_data; | |||
| 22377 | ||||
| 22378 | // For the list of valid continuum models: | |||
| 22379 | ArrayOfString valid_models; | |||
| 22380 | ||||
| 22381 | bool found = false; | |||
| 22382 | ||||
| 22383 | // Loop all species: | |||
| 22384 | for ( Array<SpeciesRecord>::const_iterator i=species_data.begin(); | |||
| 22385 | i<species_data.end(); | |||
| 22386 | ++i ) | |||
| 22387 | { | |||
| 22388 | String specnam = i->Name(); | |||
| 22389 | ||||
| 22390 | // Loop all isotopologues: | |||
| 22391 | for ( Array<IsotopologueRecord>::const_iterator j=i->Isotopologue().begin(); | |||
| 22392 | j<i->Isotopologue().end(); | |||
| 22393 | ++j ) | |||
| 22394 | { | |||
| 22395 | String isonam = j->Name(); | |||
| 22396 | ||||
| 22397 | // The specified name consists of a species part and an | |||
| 22398 | // isotopologue part, e.g., H2O-ContStandardSelf. We need to | |||
| 22399 | // construct a similar String from the species lookup data | |||
| 22400 | // by concatenating species name and isotopologue name. | |||
| 22401 | ||||
| 22402 | String fullnam = specnam + "-" + isonam; | |||
| 22403 | // cout << fullnam << "\n"; | |||
| 22404 | ||||
| 22405 | // See if this is a continuum tag, so that we can add it to | |||
| 22406 | // the list: | |||
| 22407 | if (j->isContinuum()) | |||
| 22408 | { | |||
| 22409 | valid_models.push_back(fullnam); | |||
| 22410 | } | |||
| 22411 | ||||
| 22412 | if ( name == fullnam ) | |||
| 22413 | { | |||
| 22414 | found = true; | |||
| 22415 | } | |||
| 22416 | } | |||
| 22417 | } | |||
| 22418 | ||||
| 22419 | // ---------------------------------------------------------------------- | |||
| 22420 | // Have we found it? | |||
| 22421 | if (!found) | |||
| 22422 | { | |||
| 22423 | ostringstream os; | |||
| 22424 | os << "The String `" << name << "' matches none of the known\n" | |||
| 22425 | << "continuum models. Known continuum models are:"; | |||
| 22426 | for ( ArrayOfString::const_iterator i=valid_models.begin(); | |||
| 22427 | i<valid_models.end(); | |||
| 22428 | ++i ) | |||
| 22429 | { | |||
| 22430 | os << "\n" << *i; | |||
| 22431 | } | |||
| 22432 | throw runtime_error(os.str()); | |||
| 22433 | } | |||
| 22434 | } | |||
| 22435 | // | |||
| 22436 | // | |||
| 22437 | // ################################################################################# | |||
| 22438 | // ############################# f2c code implementation ########################### | |||
| 22439 | // ################################################################################# | |||
| 22440 | // | |||
| 22441 | // | |||
| 22442 | // ------------------- begin of f2c.h file -------------------------------- | |||
| 22443 | // | |||
| 22444 | /* f2c.h -- Standard Fortran to C header file */ | |||
| 22445 | #ifndef F2C_INCLUDE | |||
| 22446 | #define F2C_INCLUDE | |||
| 22447 | ||||
| 22448 | typedef long int integer; | |||
| 22449 | typedef unsigned long int uinteger; | |||
| 22450 | typedef char *address; | |||
| 22451 | typedef short int shortint; | |||
| 22452 | typedef float real_t; | |||
| 22453 | typedef double doublereal; | |||
| 22454 | typedef struct { real_t r, i; } complex_t; | |||
| 22455 | typedef struct { doublereal r, i; } doublecomplex; | |||
| 22456 | typedef long int logical; | |||
| 22457 | typedef short int shortlogical; | |||
| 22458 | typedef char logical1; | |||
| 22459 | typedef char integer1; | |||
| 22460 | #ifdef INTEGER_STAR_8 /* Adjust for integer*8. */ | |||
| 22461 | typedef long long longint; /* system-dependent */ | |||
| 22462 | typedef unsigned long long ulongint; /* system-dependent */ | |||
| 22463 | #define qbit_clear(a,b) ((a) & ~((ulongint)1 << (b))) | |||
| 22464 | #define qbit_set(a,b) ((a) | ((ulongint)1 << (b))) | |||
| 22465 | #endif | |||
| 22466 | ||||
| 22467 | #define TRUE_(1) (1) | |||
| 22468 | #define FALSE_(0) (0) | |||
| 22469 | ||||
| 22470 | /* Extern is for use with -E */ | |||
| 22471 | #ifndef Externextern | |||
| 22472 | #define Externextern extern | |||
| 22473 | #endif | |||
| 22474 | ||||
| 22475 | /* I/O stuff */ | |||
| 22476 | ||||
| 22477 | #ifdef f2c_i2 | |||
| 22478 | /* for -i2 */ | |||
| 22479 | typedef short flag; | |||
| 22480 | typedef short ftnlen; | |||
| 22481 | typedef short ftnint; | |||
| 22482 | #else | |||
| 22483 | typedef long int flag; | |||
| 22484 | typedef long int ftnlen; | |||
| 22485 | typedef long int ftnint; | |||
| 22486 | #endif | |||
| 22487 | ||||
| 22488 | /*external read, write*/ | |||
| 22489 | typedef struct | |||
| 22490 | { flag cierr; | |||
| 22491 | ftnint ciunit; | |||
| 22492 | flag ciend; | |||
| 22493 | char *cifmt; | |||
| 22494 | ftnint cirec; | |||
| 22495 | } cilist; | |||
| 22496 | ||||
| 22497 | /*internal read, write*/ | |||
| 22498 | typedef struct | |||
| 22499 | { flag icierr; | |||
| 22500 | char *iciunit; | |||
| 22501 | flag iciend; | |||
| 22502 | char *icifmt; | |||
| 22503 | ftnint icirlen; | |||
| 22504 | ftnint icirnum; | |||
| 22505 | } icilist; | |||
| 22506 | ||||
| 22507 | /*open*/ | |||
| 22508 | typedef struct | |||
| 22509 | { flag oerr; | |||
| 22510 | ftnint ounit; | |||
| 22511 | char *ofnm; | |||
| 22512 | ftnlen ofnmlen; | |||
| 22513 | char *osta; | |||
| 22514 | char *oacc; | |||
| 22515 | char *ofm; | |||
| 22516 | ftnint orl; | |||
| 22517 | char *oblnk; | |||
| 22518 | } olist; | |||
| 22519 | ||||
| 22520 | /*close*/ | |||
| 22521 | typedef struct | |||
| 22522 | { flag cerr; | |||
| 22523 | ftnint cunit; | |||
| 22524 | char *csta; | |||
| 22525 | } cllist; | |||
| 22526 | ||||
| 22527 | /*rewind, backspace, endfile*/ | |||
| 22528 | typedef struct | |||
| 22529 | { flag aerr; | |||
| 22530 | ftnint aunit; | |||
| 22531 | } alist; | |||
| 22532 | ||||
| 22533 | /* inquire */ | |||
| 22534 | typedef struct | |||
| 22535 | { flag inerr; | |||
| 22536 | ftnint inunit; | |||
| 22537 | char *infile; | |||
| 22538 | ftnlen infilen; | |||
| 22539 | ftnint *inex; /*parameters in standard's order*/ | |||
| 22540 | ftnint *inopen; | |||
| 22541 | ftnint *innum; | |||
| 22542 | ftnint *innamed; | |||
| 22543 | char *inname; | |||
| 22544 | ftnlen innamlen; | |||
| 22545 | char *inacc; | |||
| 22546 | ftnlen inacclen; | |||
| 22547 | char *inseq; | |||
| 22548 | ftnlen inseqlen; | |||
| 22549 | char *indir; | |||
| 22550 | ftnlen indirlen; | |||
| 22551 | char *infmt; | |||
| 22552 | ftnlen infmtlen; | |||
| 22553 | char *inform; | |||
| 22554 | ftnint informlen; | |||
| 22555 | char *inunf; | |||
| 22556 | ftnlen inunflen; | |||
| 22557 | ftnint *inrecl; | |||
| 22558 | ftnint *innrec; | |||
| 22559 | char *inblank; | |||
| 22560 | ftnlen inblanklen; | |||
| 22561 | } inlist; | |||
| 22562 | ||||
| 22563 | #define VOIDvoid void | |||
| 22564 | ||||
| 22565 | union Multitype { /* for multiple entry points */ | |||
| 22566 | integer1 g; | |||
| 22567 | shortint h; | |||
| 22568 | integer i; | |||
| 22569 | /* longint j; */ | |||
| 22570 | real_t r; | |||
| 22571 | doublereal d; | |||
| 22572 | complex_t c; | |||
| 22573 | doublecomplex z; | |||
| 22574 | }; | |||
| 22575 | ||||
| 22576 | typedef union Multitype Multitype; | |||
| 22577 | ||||
| 22578 | /*typedef long int Long;*/ /* No longer used; formerly in Namelist */ | |||
| 22579 | ||||
| 22580 | struct Vardesc { /* for Namelist */ | |||
| 22581 | char *name; | |||
| 22582 | char *addr; | |||
| 22583 | ftnlen *dims; | |||
| 22584 | int type; | |||
| 22585 | }; | |||
| 22586 | typedef struct Vardesc Vardesc; | |||
| 22587 | ||||
| 22588 | struct Namelist { | |||
| 22589 | char *name; | |||
| 22590 | Vardesc **vars; | |||
| 22591 | int nvars; | |||
| 22592 | }; | |||
| 22593 | typedef struct Namelist Namelist; | |||
| 22594 | ||||
| 22595 | #define abs(x)((x) >= 0 ? (x) : -(x)) ((x) >= 0 ? (x) : -(x)) | |||
| 22596 | #define dabs(x)(doublereal)((x) >= 0 ? (x) : -(x)) (doublereal)abs(x)((x) >= 0 ? (x) : -(x)) | |||
| 22597 | #define min(a,b)((a) <= (b) ? (a) : (b)) ((a) <= (b) ? (a) : (b)) | |||
| 22598 | #define max(a,b)((a) >= (b) ? (a) : (b)) ((a) >= (b) ? (a) : (b)) | |||
| 22599 | #define dmin(a,b)(doublereal)((a) <= (b) ? (a) : (b)) (doublereal)min(a,b)((a) <= (b) ? (a) : (b)) | |||
| 22600 | #define dmax(a,b)(doublereal)((a) >= (b) ? (a) : (b)) (doublereal)max(a,b)((a) >= (b) ? (a) : (b)) | |||
| 22601 | #define bit_test(a,b)((a) >> (b) & 1) ((a) >> (b) & 1) | |||
| 22602 | #define bit_clear(a,b)((a) & ~((uinteger)1 << (b))) ((a) & ~((uinteger)1 << (b))) | |||
| 22603 | #define bit_set(a,b)((a) | ((uinteger)1 << (b))) ((a) | ((uinteger)1 << (b))) | |||
| 22604 | ||||
| 22605 | /* procedure parameter types for -A and -C++ */ | |||
| 22606 | ||||
| 22607 | #define F2C_proc_par_types1 1 | |||
| 22608 | #ifdef __cplusplus201103L | |||
| 22609 | typedef int /* Unknown procedure type */ (*U_fp)(...); | |||
| 22610 | typedef shortint (*J_fp)(...); | |||
| 22611 | typedef integer (*I_fp)(...); | |||
| 22612 | typedef real_t (*R_fp)(...); | |||
| 22613 | typedef doublereal (*D_fp)(...), (*E_fp)(...); | |||
| 22614 | typedef /* Complex */ VOIDvoid (*C_fp)(...); | |||
| 22615 | typedef /* Double Complex */ VOIDvoid (*Z_fp)(...); | |||
| 22616 | typedef logical (*L_fp)(...); | |||
| 22617 | typedef shortlogical (*K_fp)(...); | |||
| 22618 | typedef /* Character */ VOIDvoid (*H_fp)(...); | |||
| 22619 | typedef /* Subroutine */ int (*S_fp)(...); | |||
| 22620 | #else | |||
| 22621 | typedef int /* Unknown procedure type */ (*U_fp)(); | |||
| 22622 | typedef shortint (*J_fp)(); | |||
| 22623 | typedef integer (*I_fp)(); | |||
| 22624 | typedef real_t (*R_fp)(); | |||
| 22625 | typedef doublereal (*D_fp)(), (*E_fp)(); | |||
| 22626 | typedef /* Complex */ VOIDvoid (*C_fp)(); | |||
| 22627 | typedef /* Double Complex */ VOIDvoid (*Z_fp)(); | |||
| 22628 | typedef logical (*L_fp)(); | |||
| 22629 | typedef shortlogical (*K_fp)(); | |||
| 22630 | typedef /* Character */ VOIDvoid (*H_fp)(); | |||
| 22631 | typedef /* Subroutine */ int (*S_fp)(); | |||
| 22632 | #endif | |||
| 22633 | /* E_fp is for real functions when -R is not specified */ | |||
| 22634 | typedef VOIDvoid C_f; /* complex function */ | |||
| 22635 | typedef VOIDvoid H_f; /* character function */ | |||
| 22636 | typedef VOIDvoid Z_f; /* double complex function */ | |||
| 22637 | typedef doublereal E_f; /* real function with -R not specified */ | |||
| 22638 | ||||
| 22639 | /* undef any lower-case symbols that your C compiler predefines, e.g.: */ | |||
| 22640 | ||||
| 22641 | #ifndef Skip_f2c_Undefs | |||
| 22642 | #undef cray | |||
| 22643 | #undef gcos | |||
| 22644 | #undef mc68010 | |||
| 22645 | #undef mc68020 | |||
| 22646 | #undef mips | |||
| 22647 | #undef pdp11 | |||
| 22648 | #undef sgi | |||
| 22649 | #undef sparc | |||
| 22650 | #undef sun | |||
| 22651 | #undef sun2 | |||
| 22652 | #undef sun3 | |||
| 22653 | #undef sun4 | |||
| 22654 | #undef u370 | |||
| 22655 | #undef u3b | |||
| 22656 | #undef u3b2 | |||
| 22657 | #undef u3b5 | |||
| 22658 | #undef unix | |||
| 22659 | #undef vax | |||
| 22660 | #endif | |||
| 22661 | #endif | |||
| 22662 | ||||
| 22663 | // ------------------- end of f2c.h file -------------------------------- | |||
| 22664 | ||||
| 22665 | ||||
| 22666 | // ------------------ begin of Borysow N2N2 F77 code -------------------- | |||
| 22667 | ||||
| 22668 | ||||
| 22669 | /* n2n2tks.f -- translated by f2c (version 20010821). | |||
| 22670 | You must link the resulting object file with the libraries: | |||
| 22671 | -lf2c -lm (in that order) | |||
| 22672 | */ | |||
| 22673 | ||||
| 22674 | /* Common Block Declarations */ | |||
| 22675 | ||||
| 22676 | struct s_blockin_ { | |||
| 22677 | double temp, fnumin, fnumax, dnu; | |||
| 22678 | } blockin_; | |||
| 22679 | ||||
| 22680 | #define blockin_1blockin_ blockin_ | |||
| 22681 | ||||
| 22682 | struct s_app3a_ { | |||
| 22683 | double slit, dx, wnrmax3; | |||
| 22684 | } app3a_; | |||
| 22685 | ||||
| 22686 | #define app3a_1app3a_ app3a_ | |||
| 22687 | ||||
| 22688 | struct s_app3b_ { | |||
| 22689 | int nsri, ns, nsriup; | |||
| 22690 | } app3b_; | |||
| 22691 | ||||
| 22692 | #define app3b_1app3b_ app3b_ | |||
| 22693 | ||||
| 22694 | struct s_rsilo_ { | |||
| 22695 | double rsilo[201]; | |||
| 22696 | } rsilo_; | |||
| 22697 | ||||
| 22698 | #define rsilo_1rsilo_ rsilo_ | |||
| 22699 | ||||
| 22700 | struct s_bou43_ { | |||
| 22701 | int initb; | |||
| 22702 | } bou43_; | |||
| 22703 | ||||
| 22704 | #define bou43_1bou43_ bou43_ | |||
| 22705 | ||||
| 22706 | union u_bba_ { | |||
| 22707 | struct s_m_1 { | |||
| 22708 | double omeg[201], rsi[201], rsigg[201], alfa; | |||
| 22709 | } m_1; | |||
| 22710 | struct s_m_2 { | |||
| 22711 | double omeg[201], rsi[201], rsigg[201], beta; | |||
| 22712 | } m_2; | |||
| 22713 | } bba_; | |||
| 22714 | ||||
| 22715 | #define bba_1(bba_.m_1) (bba_.m_1) | |||
| 22716 | #define bba_2(bba_.m_2) (bba_.m_2) | |||
| 22717 | ||||
| 22718 | struct s_bbc_ { | |||
| 22719 | int nsol; | |||
| 22720 | } bbc_; | |||
| 22721 | ||||
| 22722 | #define bbc_1bbc_ bbc_ | |||
| 22723 | ||||
| 22724 | struct s_bf_ { | |||
| 22725 | double g0bf, delbf, om0; | |||
| 22726 | } bf_; | |||
| 22727 | ||||
| 22728 | #define bf_1bf_ bf_ | |||
| 22729 | ||||
| 22730 | struct like_1_ { | |||
| 22731 | int like; | |||
| 22732 | char lgas[5]; | |||
| 22733 | }; | |||
| 22734 | ||||
| 22735 | #define like_1(*(struct like_1_ *) &like_) (*(struct like_1_ *) &like_) | |||
| 22736 | ||||
| 22737 | struct s_k1k0_ { | |||
| 22738 | int ik1k0; | |||
| 22739 | } k1k0_; | |||
| 22740 | ||||
| 22741 | #define k1k0_1k1k0_ k1k0_ | |||
| 22742 | ||||
| 22743 | struct s_bbb_ { | |||
| 22744 | int ibound; | |||
| 22745 | } bbb_; | |||
| 22746 | ||||
| 22747 | #define bbb_1bbb_ bbb_ | |||
| 22748 | ||||
| 22749 | struct energ_1_ { | |||
| 22750 | double eb[246] /* was [41][6] */; | |||
| 22751 | int niv[6]; | |||
| 22752 | }; | |||
| 22753 | ||||
| 22754 | #define energ_1(*(struct energ_1_ *) &energ_) (*(struct energ_1_ *) &energ_) | |||
| 22755 | ||||
| 22756 | struct s_dimer_ { | |||
| 22757 | int nlines; | |||
| 22758 | } dimer_; | |||
| 22759 | ||||
| 22760 | #define dimer_1dimer_ dimer_ | |||
| 22761 | ||||
| 22762 | struct n2part_1_ { | |||
| 22763 | double q1, wn2[2], b01, d01; | |||
| 22764 | int jrange2; | |||
| 22765 | }; | |||
| 22766 | struct n2part_2_ { | |||
| 22767 | double q, wn2[2], b0, d0; | |||
| 22768 | int jrange1; | |||
| 22769 | }; | |||
| 22770 | ||||
| 22771 | #define n2part_1(*(struct n2part_1_ *) &n2part_) (*(struct n2part_1_ *) &n2part_) | |||
| 22772 | #define n2part_2(*(struct n2part_2_ *) &n2part_) (*(struct n2part_2_ *) &n2part_) | |||
| 22773 | ||||
| 22774 | union u_bl3_ { | |||
| 22775 | struct s_m_1 { | |||
| 22776 | double rsi[401]; | |||
| 22777 | } m_1; | |||
| 22778 | struct s_m_2 { | |||
| 22779 | double rsibb[401]; | |||
| 22780 | } m_2; | |||
| 22781 | } bl3_; | |||
| 22782 | ||||
| 22783 | #define bl3_1(bl3_.m_1) (bl3_.m_1) | |||
| 22784 | #define bl3_2(bl3_.m_2) (bl3_.m_2) | |||
| 22785 | ||||
| 22786 | union u_bbbb_ { | |||
| 22787 | struct s_m_1 { | |||
| 22788 | int idelv, iv, ivp, idell, il, ilp; | |||
| 22789 | } m_1; | |||
| 22790 | struct s_m_2 { | |||
| 22791 | int ldelvi, ivi, ivip, ldelel, ll, llp; | |||
| 22792 | } m_2; | |||
| 22793 | } bbbb_; | |||
| 22794 | ||||
| 22795 | #define bbbb_1(bbbb_.m_1) (bbbb_.m_1) | |||
| 22796 | #define bbbb_2(bbbb_.m_2) (bbbb_.m_2) | |||
| 22797 | ||||
| 22798 | /* Initialized data */ | |||
| 22799 | ||||
| 22800 | struct s_energe_ { | |||
| 22801 | double e_1[246]; | |||
| 22802 | int e_2[6]; | |||
| 22803 | } energ_ = { {-54.99996, -54.86228, -54.58697, -54.17413, -53.62391, | |||
| 22804 | -52.93648, -52.11211, -51.15108, -50.05374, -48.82049, -47.45179, | |||
| 22805 | -45.94815, -44.31014, -42.53841, -40.63365, -38.59665, -36.42824, | |||
| 22806 | -34.12937, -31.70105, -29.14439, -26.46061, -23.65103, -20.71709, | |||
| 22807 | -17.66041, -14.48271, -11.18593, -7.77221, -4.24393, -.60374, | |||
| 22808 | 3.14531, 6.99978, 10.95566, 15.00818, 19.15136, 23.37787, | |||
| 22809 | 27.67681, 32.03237, 36.42278, 40.83668, 45.29436, 49.79246, | |||
| 22810 | -31.89437, -31.77215, -31.52779, -31.16143, -30.67334, -30.06382, | |||
| 22811 | -29.33328, -28.48222, -27.51123, -26.42099, -25.21229, -23.88603, | |||
| 22812 | -22.44322, -20.88502, -19.21272, -17.42777, -15.53182, -13.52669, | |||
| 22813 | -11.41446, -9.1975, -6.87848, -4.46049, -1.94714, .65736, 3.34788, | |||
| 22814 | 6.11816, 8.95978, 11.8613, 14.80383, 17.75924, 20.71774, | |||
| 22815 | 23.71589, 0., 0., 0., 0., 0., 0., 0., 0., 0., -16.05019, -15.9464, | |||
| 22816 | -15.73896, -15.42815, -15.0144, -14.4983, -13.88057, -13.16213, | |||
| 22817 | -12.34407, -11.42771, -10.41455, -9.30639, -8.10531, -6.81376, | |||
| 22818 | -5.43459, -3.97121, -2.42768, -.80899, .87859, 2.62689, 4.42334, | |||
| 22819 | 6.24733, 8.06983, 9.90464, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., | |||
| 22820 | 0., 0., 0., 0., 0., 0., 0., -6.49343, -6.41131, -6.24732, | |||
| 22821 | -6.00202, -5.67623, -5.27111, -4.78813, -4.22919, -3.59665, | |||
| 22822 | -2.89345, -2.12325, -1.29074, -.40202, .5345, 1.50455, 2.48212, | |||
| 22823 | 3.46665, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., | |||
| 22824 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -1.76583, -1.70887, | |||
| 22825 | -1.59552, -1.427, -1.20523, -.93302, -.61434, -.25504, .13641, 0., | |||
| 22826 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., | |||
| 22827 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., | |||
| 22828 | -.17133, -.14341, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., | |||
| 22829 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., | |||
| 22830 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.}, {41, 32, 24, 17, 9, 2} } | |||
| 22831 | ; | |||
| 22832 | ||||
| 22833 | struct s_n2part_ { | |||
| 22834 | double fill_1[1]; | |||
| 22835 | double e_2[4]; | |||
| 22836 | int fill_3[1]; | |||
| 22837 | } n2part_ = { {0}, {2., 1., 1.98957, 5.8e-6}, {0} }; | |||
| 22838 | ||||
| 22839 | struct s_like_ { | |||
| 22840 | int fill_1[1]; | |||
| 22841 | char e_2[5]; | |||
| 22842 | } like_ = { {0}, "N2N2" }; | |||
| 22843 | ||||
| 22844 | ||||
| 22845 | /* Table of constant values */ | |||
| 22846 | ||||
| 22847 | // FIXME static integer c__9 = 9; | |||
| 22848 | // FIXME static integer c__1 = 1; | |||
| 22849 | // FIXME static integer c__5 = 5; | |||
| 22850 | static int cs__1 = 1; | |||
| 22851 | static int cs__0 = 0; | |||
| 22852 | static double c_b24 = 2.9723; | |||
| 22853 | static double c_b25 = -.99569; | |||
| 22854 | static double c_b26 = .09464; | |||
| 22855 | static double c_b27 = 1.2962e-12; | |||
| 22856 | static double c_b28 = -.13048; | |||
| 22857 | static double c_b29 = -.03128; | |||
| 22858 | static double c_b30 = 3.7969e-14; | |||
| 22859 | static double c_b31 = 1.03681; | |||
| 22860 | static double c_b32 = -.14336; | |||
| 22861 | static int cs__2 = 2; | |||
| 22862 | static int cs__3 = 3; | |||
| 22863 | static double c_b43 = .180926; | |||
| 22864 | static double c_b44 = -1.69153; | |||
| 22865 | static double c_b45 = .18605; | |||
| 22866 | static double c_b46 = .3; | |||
| 22867 | static double c_b47 = 0.; | |||
| 22868 | static double c_b49 = 6.6017e-16; | |||
| 22869 | static double c_b50 = 2.59982; | |||
| 22870 | static double c_b51 = -.31831; | |||
| 22871 | static double c_b52 = 1.2481e-12; | |||
| 22872 | static double c_b53 = -.57028; | |||
| 22873 | static double c_b54 = .05983; | |||
| 22874 | static double c_b55 = 5.2681e-13; | |||
| 22875 | static double c_b56 = -.24719; | |||
| 22876 | static double c_b57 = .00519; | |||
| 22877 | static double c_b58 = 2.7518e15; | |||
| 22878 | static double c_b59 = -25.38969; | |||
| 22879 | static double c_b60 = 2.46542; | |||
| 22880 | static int cs__4 = 4; | |||
| 22881 | static int cs__5 = 5; | |||
| 22882 | // FIXME static integer c__2 = 2; | |||
| 22883 | static double c_b78 = .0825299; | |||
| 22884 | static double c_b79 = -1.25562; | |||
| 22885 | static double c_b80 = .12981; | |||
| 22886 | static double c_b84 = 3.6611e-15; | |||
| 22887 | static double c_b85 = 1.47688; | |||
| 22888 | static double c_b86 = -.16537; | |||
| 22889 | static double c_b87 = 6.1264e-10; | |||
| 22890 | static double c_b88 = -2.25011; | |||
| 22891 | static double c_b89 = .15289; | |||
| 22892 | static double c_b90 = 7.982e-10; | |||
| 22893 | static double c_b91 = -2.76152; | |||
| 22894 | static double c_b92 = .21847; | |||
| 22895 | static double c_b93 = 5.2868e-22; | |||
| 22896 | static double c_b94 = 7.66253; | |||
| 22897 | static double c_b95 = -.77527; | |||
| 22898 | static double c_b112 = 119.261; | |||
| 22899 | static double c_b113 = -3.78587; | |||
| 22900 | static double c_b114 = .34024; | |||
| 22901 | static double c_b115 = 9.3777e-12; | |||
| 22902 | static double c_b116 = -.66548; | |||
| 22903 | static double c_b117 = .0033; | |||
| 22904 | static double c_b118 = 3.0395e-13; | |||
| 22905 | static double c_b119 = .24728; | |||
| 22906 | static double c_b120 = -.06607; | |||
| 22907 | static double c_b183 = 1e-6; | |||
| 22908 | static double c_b186 = 1.5; | |||
| 22909 | ||||
| 22910 | #define temp (blockin_1blockin_.temp) | |||
| 22911 | #define fnumin (blockin_1blockin_.fnumin) | |||
| 22912 | #define fnumax (blockin_1blockin_.fnumax) | |||
| 22913 | #define dnu (blockin_1blockin_.dnu) | |||
| 22914 | #define slit (app3a_1app3a_.slit) | |||
| 22915 | #define dx (app3a_1app3a_.dx) | |||
| 22916 | #define rsilo (rsilo_1rsilo_.rsilo) | |||
| 22917 | #define omeg (bba_1(bba_.m_1).omeg) | |||
| 22918 | #define rsi (bba_1(bba_.m_1).rsi) | |||
| 22919 | #define rsigg (bba_1(bba_.m_1).rsigg) | |||
| 22920 | #define nsol (bbc_1bbc_.nsol) | |||
| 22921 | #define like (like_1(*(struct like_1_ *) &like_).like) | |||
| 22922 | #define ik1k0 (k1k0_1k1k0_.ik1k0) | |||
| 22923 | #define ibound (bbb_1bbb_.ibound) | |||
| 22924 | ||||
| 22925 | /* TKS ****** SUBROUTINE N2N2TKS(T, F) ***************************************/ | |||
| 22926 | Numeric n2n2tks_(double t, double f) | |||
| 22927 | { | |||
| 22928 | /* System generated locals */ | |||
| 22929 | int s__1; | |||
| 22930 | double ret_val; | |||
| 22931 | ||||
| 22932 | /* Local variables */ | |||
| 22933 | //double hexa[10], quad[10]; | |||
| 22934 | double freq[10], e; | |||
| 22935 | int i__; | |||
| 22936 | double s, x, t1, t2, t3, t4; | |||
| 22937 | int ij, nf, jj; | |||
| 22938 | double rslow1, si; | |||
| 22939 | int nr; | |||
| 22940 | double ss[1], tt[2]; | |||
| 22941 | extern /* Subroutine */ int bound32_(double *, double *, int | |||
| 22942 | *), bound54_(double *, double *, int *); | |||
| 22943 | //double tksabs[5]; | |||
| 22944 | extern /* Subroutine */ int spline_(int *, int *, int *, | |||
| 22945 | double *, double *, double *, double *, | |||
| 22946 | double *, double *, int *, double *); | |||
| 22947 | double abscoef[10]; | |||
| 22948 | //double dtrans[10]; | |||
| 22949 | extern /* Subroutine */ int addspec_(double *, double *, | |||
| 22950 | double *, double *, double *, double *, | |||
| 22951 | double *, int *, double *, double *, int *, | |||
| 22952 | int *, int *, int *, int *, int *); | |||
| 22953 | double eps, alfatot[10]; | |||
| 22954 | extern /* Subroutine */ int partsum_(double *); | |||
| 22955 | ||||
| 22956 | /* ========================================= */ | |||
| 22957 | /* Copyright (C) Aleksandra Borysow, 1987) */ | |||
| 22958 | /* ==================================================================== */ | |||
| 22959 | /* PROGRAM PREPARED BY ALEKSANDRA BORYSOW (APRIL'1987) */ | |||
| 22960 | /* (UNIVERSITY OF TEXAS AT AUSTIN, PHYSICS DEPARTMENT) */ | |||
| 22961 | /* ORIGINAL VERSION: WRITTEN ON CYBER */ | |||
| 22962 | ||||
| 22963 | /* PROGRAM GENERATES N2-N2 COLLISION-INDUCED SPECTRA AT */ | |||
| 22964 | /* TEMPERATURES BETWEEN 50 TO 300 K. */ | |||
| 22965 | /* CIA SPECTRA MODELED AFTER PAPER (*) */ | |||
| 22966 | /* ALEKSANDRA BORYSOW AND LOTHAR FROMMHOLD, */ | |||
| 22967 | /* ASTROPHYSICAL JOURNAL, VOL. 311, PAGES 1043-1057, (1986) */ | |||
| 22968 | ||||
| 22969 | /* REVISED BY GLENN ORTON (1989) - TO WORK ON SUN WORKSTATIONS */ | |||
| 22970 | /* AND ON THE VAX MACHINES (FORTRAN-77) */ | |||
| 22971 | /* PASSES STANDARD TEST ON SUN, AT 200K (JULY 1992) */ | |||
| 22972 | /* ==================================================================== */ | |||
| 22973 | ||||
| 22974 | /* ALSO IN REVISION: DOUBLE PRECISION FOR ALL F.P. VARIABLES */ | |||
| 22975 | ||||
| 22976 | /* ==================================================================== */ | |||
| 22977 | ||||
| 22978 | /* HISTORY: */ | |||
| 22979 | ||||
| 22980 | /* 2001-02-28 THOMAS KUHN: */ | |||
| 22981 | /* CHANGE OF LINES */ | |||
| 22982 | /* RSILO(I)=DLOG(RSI(I)*1.E80) */ | |||
| 22983 | /* TO */ | |||
| 22984 | /* RSILO(I)=(DLOG(RSI(I))+80.0D0*DLOG(10.0D0)) */ | |||
| 22985 | /* BECAUSE OF OVERFLOW PROBLEMS. */ | |||
| 22986 | /* COSMETICS FOR THE CODE TO BE FASTER READABLE. */ | |||
| 22987 | /* CHANGE OF OUTPUT FILE NAME. */ | |||
| 22988 | /* CHANGE OF OUTPUT FILE CONTENT */ | |||
| 22989 | ||||
| 22990 | /* ==================================================================== */ | |||
| 22991 | ||||
| 22992 | /* TKS* IMPLICIT REAL*8 (A-H,O-Z) */ | |||
| 22993 | ||||
| 22994 | /* TKS INPUT/OUTPUT VARIABLES */ | |||
| 22995 | /* REAL T, F */ | |||
| 22996 | ||||
| 22997 | //ret_val = 0.; | |||
| 22998 | ||||
| 22999 | /* TEMP = TEMPERATURE IN KELVIN, SHOULD BE BETWEEN 50. AND 300. */ | |||
| 23000 | /* FNUMIN = LOWEST FREQUENCY IN CM-1, FOR LISTING OF ALPHA(FNU) */ | |||
| 23001 | /* FNUMAX = HIGHEST FREQUENCY IN CM-1, FOR LISTING OF ALPHA(FNU) */ | |||
| 23002 | /* LINE SHAPE MODELLING WILL BE MOST ACCURATE WITHIN RANGE OF */ | |||
| 23003 | /* R-T SPECTRAL INTENSITIES AS 1:100. */ | |||
| 23004 | /* DNU = FREQUENCY INCREMENT IN CM-1. DNU SHOULD BE CHOSEN SO */ | |||
| 23005 | /* THAT NOT MORE THAN 10 STEPS ARE NEEDED TO GO FROM */ | |||
| 23006 | /* FNUMIN TO FNUMAX (ELSE ARRAY DIMENSIONS OF FREQ,ABSCOEF */ | |||
| 23007 | /* MUST BE ADJUSTED IN ADDEM). */ | |||
| 23008 | ||||
| 23009 | ||||
| 23010 | /* USER: */ | |||
| 23011 | /* ----- */ | |||
| 23012 | /* EDIT ONLY HERE: TEMP (K), MIN. FREQ. (CM^-1)= FNUMIN, */ | |||
| 23013 | /* MAX. FREQ. = FNUMAX, STEP = DNU, SLITWIDTH (CM^-1)=SLIT */ | |||
| 23014 | /* (SLIT=4.3 IS EQUIVALENT TO THAT OF VOYAGER SPECTRA, ONLY BOUND BOUND */ | |||
| 23015 | /* SPECTRA ARE CONVOLUTED WITH THIS SLITWIDTH, THE FREE FREE SPECTRA */ | |||
| 23016 | /* ARE FAR TOO BROAD FOR THE SLITWIDTH FUNCTION TO MATTER, */ | |||
| 23017 | /* LEAVE LIKE = 1 (FOR LIKE PAIRS, AS N2-N2) */ | |||
| 23018 | /* THE PROGRAM WILL ASSUME EQUILIBRIUM N2, */ | |||
| 23019 | /* ALLOWED TEMPERATURE RANGE: 50-300K (DO NOT EXTEND IT BEYOND THESE LIMITS!) */ | |||
| 23020 | /* IF QUESTIONS: CONTACT ABORYSOW@NBI.DK */ | |||
| 23021 | /* TKS* NF=INT((FNUMAX-FNUMIN)/DNU+0.5)+1 */ | |||
| 23022 | /* TKS* IF (NF.GT.10) NF=10 */ | |||
| 23023 | /* TKS* FNUMAX=FNUMIN+FLOAT(NF-1)*DNU */ | |||
| 23024 | ||||
| 23025 | /* TKS INPUT TEMPERATURE (K) CHECK OF RANGE */ | |||
| 23026 | if (t < 50. || t > 300.) { | |||
| 23027 | ostringstream os; | |||
| 23028 | os << "out of T range ( 50<T<300)! return without calc.!" <<"\n"; | |||
| 23029 | throw runtime_error(os.str()); | |||
| 23030 | goto L999; | |||
| 23031 | } | |||
| 23032 | temp = t; | |||
| 23033 | ||||
| 23034 | /* *********************** INPUT DATA FROM USER *********************** */ | |||
| 23035 | /* FNUMIN = MINIMUM FREQENCY [CM^-1] */ | |||
| 23036 | fnumin = f / 29979245800.; | |||
| 23037 | /* FNUMAX = MAXIMUM FREQENCY [CM^-1] */ | |||
| 23038 | fnumax = fnumin; | |||
| 23039 | /* ONLY ONE FREQUENCY PER CALL */ | |||
| 23040 | nf = 1; | |||
| 23041 | /* DEFAULT VALUE OF FREQUENCY STEP [CM^-1] */ | |||
| 23042 | dnu = 10.; | |||
| 23043 | /* DEFAULT VALUE */ | |||
| 23044 | like = 1; | |||
| 23045 | /* SLIT = SLITWIDTH [CM^-1] */ | |||
| 23046 | /* SLIT=4.3 IS EQUIVALENT TO THAT OF VOYAGER SPECTRA, ONLY BOUND BOUND */ | |||
| 23047 | /* SPECTRA ARE CONVOLUTED WITH THIS SLITWIDTH, THE FREE FREE SPECTRA */ | |||
| 23048 | /* ARE FAR TOO BROAD FOR THE SLITWIDTH FUNCTION TO MATTER. */ | |||
| 23049 | slit = 4.3; | |||
| 23050 | /* ******************************************************************** */ | |||
| 23051 | ||||
| 23052 | /* TKS* WRITE (6,14) LGAS,TEMP,FNUMIN,FNUMAX,DNU,NF-1 */ | |||
| 23053 | /* TKS*14 FORMAT(' ABSORPTION SPECTRA OF ',A5,' AT',F8.1,' K'/ */ | |||
| 23054 | /* TKS* $ 1X,43(1H=),/ */ | |||
| 23055 | /* TKS* 1' MIN.FREQ.=',F8.1,' CM-1',10X,'MAX.FREQ.=',F8.1,' CM-1',10X, */ | |||
| 23056 | /* TKS* 2'FREQ.INCREMENT=',F8.2,' CM-1',5X,'IN',I5,' STEPS'//) */ | |||
| 23057 | ||||
| 23058 | ||||
| 23059 | partsum_(&temp); | |||
| 23060 | ||||
| 23061 | ||||
| 23062 | /* THE N2-N2 SPECTRA FOR 50-300K */ | |||
| 23063 | /* ================================ */ | |||
| 23064 | ||||
| 23065 | x = log(temp); | |||
| 23066 | s__1 = nf; | |||
| 23067 | for (i__ = 1; i__ <= s__1; ++i__) { | |||
| 23068 | /* FREQ(I)=FNUMIN+FLOAT(I-1)*DNU */ | |||
| 23069 | freq[i__ - 1] = fnumin; | |||
| 23070 | alfatot[i__ - 1] = 0.; | |||
| 23071 | /* L10: */ | |||
| 23072 | abscoef[i__ - 1] = 0.; | |||
| 23073 | } | |||
| 23074 | ||||
| 23075 | ||||
| 23076 | /* ==================================================================== */ | |||
| 23077 | ||||
| 23078 | ||||
| 23079 | jj = 1; | |||
| 23080 | L442: | |||
| 23081 | /* L1023: */ | |||
| 23082 | ++jj; | |||
| 23083 | if (jj == 42) { | |||
| 23084 | goto L444; | |||
| 23085 | } | |||
| 23086 | goto L442; | |||
| 23087 | /* EB(JJ,IV) JJ-ROTATIONAL LEVEL "L", IV- VIBRATIONAL LEVEL "V"; */ | |||
| 23088 | L444: | |||
| 23089 | ||||
| 23090 | ||||
| 23091 | ||||
| 23092 | /* ==================================================================== */ | |||
| 23093 | ||||
| 23094 | /* QUADRUPOLAR INDUCTION: (50-300K) LAMBDA1,LAMBDA2,LAMBDA,L=2023&0223 */ | |||
| 23095 | /* ------------------------------------------------------------------- */ | |||
| 23096 | ||||
| 23097 | eps = 1e-5; | |||
| 23098 | tt[0] = 10.; | |||
| 23099 | bound32_(&temp, rsi, &nsol); | |||
| 23100 | ij = 0; | |||
| 23101 | rslow1 = 0.; | |||
| 23102 | s__1 = nsol; | |||
| 23103 | for (i__ = 1; i__ <= s__1; ++i__) { | |||
| 23104 | ++ij; | |||
| 23105 | /* MOD CAN BE ONLY 0 OR 1 OR 2 */ | |||
| 23106 | if (ij % 3 == 0) { | |||
| 23107 | rslow1 = 1.5e-60; | |||
| 23108 | } | |||
| 23109 | if (ij % 3 == 1) { | |||
| 23110 | rslow1 = 1.7e-60; | |||
| 23111 | } | |||
| 23112 | if (ij % 3 == 2) { | |||
| 23113 | rslow1 = 1.6e-60; | |||
| 23114 | } | |||
| 23115 | if (rsi[i__ - 1] < 1e-60) { | |||
| 23116 | rsi[i__ - 1] = rslow1; | |||
| 23117 | } | |||
| 23118 | /* TKS* RSILO(I)=DLOG(RSI(I)*1.D80) */ | |||
| 23119 | rsilo[i__ - 1] = log(rsi[i__ - 1]) + log(10.) * 80.; | |||
| 23120 | omeg[i__ - 1] = (double) (i__ - 1) * dx; | |||
| 23121 | /* L88: */ | |||
| 23122 | } | |||
| 23123 | ||||
| 23124 | /* L9991: */ | |||
| 23125 | ||||
| 23126 | spline_(&nsol, &cs__1, &cs__0, &eps, omeg, rsilo, tt, ss, &si, &nr, rsigg) | |||
| 23127 | ; | |||
| 23128 | ||||
| 23129 | ik1k0 = 1; | |||
| 23130 | ibound = 1; | |||
| 23131 | /* B-C LINESHAPE HERE */ | |||
| 23132 | /* THESE VALUES (S,T1,T2) REPLACE VALUES GIVEN IN PAPER (*): */ | |||
| 23133 | /* PUBLISHED IN AN ERRATUM, ASTROPHYSICAL JOURNAL, VOL.320, P.437 */ | |||
| 23134 | /* (1987) */ | |||
| 23135 | s = c_b24 * exp((c_b26 * x + c_b25) * x); | |||
| 23136 | t1 = c_b27 * exp((c_b29 * x + c_b28) * x); | |||
| 23137 | t2 = c_b30 * exp((c_b32 * x + c_b31) * x); | |||
| 23138 | e = 0.; | |||
| 23139 | t3 = 0.; | |||
| 23140 | t4 = 0.; | |||
| 23141 | ||||
| 23142 | addspec_(&s, &e, &t1, &t2, &t3, &t4, &temp, &nf, freq, abscoef, &cs__0, & | |||
| 23143 | like, &cs__2, &cs__0, &cs__2, &cs__3); | |||
| 23144 | s__1 = nf; | |||
| 23145 | for (i__ = 1; i__ <= s__1; ++i__) { | |||
| 23146 | //quad[i__ - 1] = abscoef[i__ - 1]; | |||
| 23147 | /* L20: */ | |||
| 23148 | alfatot[i__ - 1] = abscoef[i__ - 1] + alfatot[i__ - 1]; | |||
| 23149 | } | |||
| 23150 | ||||
| 23151 | ||||
| 23152 | ||||
| 23153 | /* ==================================================================== */ | |||
| 23154 | ||||
| 23155 | /* HEXADECAPOLE COMPONENTS: LAMBDA1,LAMBDA2,LAMBDA,L=4045&0445 */ | |||
| 23156 | /* ----------------------------------------------------------- */ | |||
| 23157 | ||||
| 23158 | bound54_(&temp, rsi, &nsol); | |||
| 23159 | ij = 0; | |||
| 23160 | s__1 = nsol; | |||
| 23161 | for (i__ = 1; i__ <= s__1; ++i__) { | |||
| 23162 | ++ij; | |||
| 23163 | /* MOD CAN BE ONLY 0 OR 1 OR 2 */ | |||
| 23164 | if (ij % 3 == 0) { | |||
| 23165 | rslow1 = 1.5e-60; | |||
| 23166 | } | |||
| 23167 | if (ij % 3 == 1) { | |||
| 23168 | rslow1 = 1.7e-60; | |||
| 23169 | } | |||
| 23170 | if (ij % 3 == 2) { | |||
| 23171 | rslow1 = 1.6e-60; | |||
| 23172 | } | |||
| 23173 | if (rsi[i__ - 1] < 1e-60) { | |||
| 23174 | rsi[i__ - 1] = rslow1; | |||
| 23175 | } | |||
| 23176 | /* TKS RSILO(I)=DLOG(RSI(I)*1.E80) */ | |||
| 23177 | rsilo[i__ - 1] = log(rsi[i__ - 1]) + log(10.) * 80.; | |||
| 23178 | /* L111: */ | |||
| 23179 | omeg[i__ - 1] = (double) (i__ - 1) * dx; | |||
| 23180 | } | |||
| 23181 | spline_(&nsol, &cs__1, &cs__0, &eps, omeg, rsilo, tt, ss, &si, &nr, rsigg) | |||
| 23182 | ; | |||
| 23183 | ||||
| 23184 | /* --------------------------- */ | |||
| 23185 | /* TEMPERATURES 50-140K */ | |||
| 23186 | /* --------------------------- */ | |||
| 23187 | ||||
| 23188 | if (temp >= 140.) { | |||
| 23189 | goto L333; | |||
| 23190 | } | |||
| 23191 | ||||
| 23192 | s = c_b43 * exp((c_b45 * x + c_b44) * x); | |||
| 23193 | e = c_b46 * exp((c_b47 * x + c_b47) * x); | |||
| 23194 | t1 = c_b49 * exp((c_b51 * x + c_b50) * x); | |||
| 23195 | t2 = c_b52 * exp((c_b54 * x + c_b53) * x); | |||
| 23196 | t3 = c_b55 * exp((c_b57 * x + c_b56) * x); | |||
| 23197 | t4 = c_b58 * exp((c_b60 * x + c_b59) * x); | |||
| 23198 | ||||
| 23199 | ik1k0 = 0; | |||
| 23200 | ibound = 1; | |||
| 23201 | addspec_(&s, &e, &t1, &t2, &t3, &t4, &temp, &nf, freq, abscoef, &cs__0, & | |||
| 23202 | like, &cs__4, &cs__0, &cs__4, &cs__5); | |||
| 23203 | s__1 = nf; | |||
| 23204 | for (i__ = 1; i__ <= s__1; ++i__) { | |||
| 23205 | //hexa[i__ - 1] = abscoef[i__ - 1]; | |||
| 23206 | /* | |||
| 23207 | s_wsle(&io___25); | |||
| 23208 | do_lio(&c__9, &c__1, " T=50-140K: HEXA(", (ftnlen)17); | |||
| 23209 | do_lio(&c__2, &c__1, (char *)&i__, (ftnlen)sizeof(int)); | |||
| 23210 | do_lio(&c__9, &c__1, ") =", (ftnlen)3); | |||
| 23211 | do_lio(&c__5, &c__1, (char *)&abscoef[i__ - 1], (ftnlen)sizeof( | |||
| 23212 | double)); | |||
| 23213 | e_wsle(); | |||
| 23214 | */ | |||
| 23215 | /* L50: */ | |||
| 23216 | alfatot[i__ - 1] += abscoef[i__ - 1]; | |||
| 23217 | } | |||
| 23218 | goto L334; | |||
| 23219 | ||||
| 23220 | /* --------------------------- */ | |||
| 23221 | /* TEMPERATURES 140-300K */ | |||
| 23222 | /* --------------------------- */ | |||
| 23223 | ||||
| 23224 | L333: | |||
| 23225 | ik1k0 = 0; | |||
| 23226 | ibound = 1; | |||
| 23227 | s = c_b78 * exp((c_b80 * x + c_b79) * x); | |||
| 23228 | e = c_b46 * exp((c_b47 * x + c_b47) * x); | |||
| 23229 | t1 = c_b84 * exp((c_b86 * x + c_b85) * x); | |||
| 23230 | t2 = c_b87 * exp((c_b89 * x + c_b88) * x); | |||
| 23231 | t3 = c_b90 * exp((c_b92 * x + c_b91) * x); | |||
| 23232 | t4 = c_b93 * exp((c_b95 * x + c_b94) * x); | |||
| 23233 | ||||
| 23234 | addspec_(&s, &e, &t1, &t2, &t3, &t4, &temp, &nf, freq, abscoef, &cs__0, & | |||
| 23235 | like, &cs__4, &cs__0, &cs__4, &cs__5); | |||
| 23236 | s__1 = nf; | |||
| 23237 | for (i__ = 1; i__ <= s__1; ++i__) { | |||
| 23238 | //hexa[i__ - 1] = abscoef[i__ - 1]; | |||
| 23239 | /* | |||
| 23240 | s_wsle(&io___26); | |||
| 23241 | do_lio(&c__9, &c__1, " T=140-300K: HEXA(", (ftnlen)18); | |||
| 23242 | do_lio(&c__2, &c__1, (char *)&i__, (ftnlen)sizeof(int)); | |||
| 23243 | do_lio(&c__9, &c__1, ") =", (ftnlen)3); | |||
| 23244 | do_lio(&c__5, &c__1, (char *)&abscoef[i__ - 1], (ftnlen)sizeof( | |||
| 23245 | double)); | |||
| 23246 | e_wsle(); | |||
| 23247 | */ | |||
| 23248 | /* L550: */ | |||
| 23249 | alfatot[i__ - 1] += abscoef[i__ - 1]; | |||
| 23250 | } | |||
| 23251 | ||||
| 23252 | /* ==================================================================== */ | |||
| 23253 | ||||
| 23254 | /* DOUBLE TRANSITIONS: LAMBDA1,LAMBDA2,LAMBDA,L=2,2,3,3 */ | |||
| 23255 | /* ---------------------------------------------------- */ | |||
| 23256 | ||||
| 23257 | /* --------------------------- */ | |||
| 23258 | /* TEMPERATURES 50-300K */ | |||
| 23259 | /* --------------------------- */ | |||
| 23260 | ||||
| 23261 | L334: | |||
| 23262 | ik1k0 = 1; | |||
| 23263 | ibound = 0; | |||
| 23264 | /* X S=Y(X,1.19261D-58, -3.78587,0.34024) */ | |||
| 23265 | s = c_b112 * exp((c_b114 * x + c_b113) * x); | |||
| 23266 | t1 = c_b115 * exp((c_b117 * x + c_b116) * x); | |||
| 23267 | t2 = c_b118 * exp((c_b120 * x + c_b119) * x); | |||
| 23268 | t3 = 0.; | |||
| 23269 | t4 = 0.; | |||
| 23270 | addspec_(&s, &e, &t1, &t2, &t3, &t4, &temp, &nf, freq, abscoef, &cs__0, & | |||
| 23271 | like, &cs__2, &cs__2, &cs__3, &cs__3); | |||
| 23272 | s__1 = nf; | |||
| 23273 | for (i__ = 1; i__ <= s__1; ++i__) { | |||
| 23274 | //dtrans[i__ - 1] = abscoef[i__ - 1]; | |||
| 23275 | /* L650: */ | |||
| 23276 | alfatot[i__ - 1] += abscoef[i__ - 1]; | |||
| 23277 | } | |||
| 23278 | ||||
| 23279 | /* ==================================================================== */ | |||
| 23280 | ||||
| 23281 | /* ANISOTROPIC OVERLAP NEGLECTED (LAMBDA1,LAMBDA2,LAMBDA,L=0212) */ | |||
| 23282 | /* SINCE THIS TERM IS EXTREMELY SMALL */ | |||
| 23283 | ||||
| 23284 | /* ==================================================================== */ | |||
| 23285 | ||||
| 23286 | /* TKS* PRINT 154, FREQ(1),FREQ(NF),FREQ(2)-FREQ(1),TEMP */ | |||
| 23287 | /* TKS* PRINT 156, (ALFATOT(I),I=1,NF) */ | |||
| 23288 | /* TKS*154 FORMAT(///' ABSORPTION COEFFICIENT ALPHA(FNU), FROM ',F5.1, */ | |||
| 23289 | /* TKS* $' CM-1 TO',F7.1,' CM-1, AT',F6.2,' CM-1 INCREMENTS, AT T=', */ | |||
| 23290 | /* TKS* $F7.2,' K, IN UNITS OF CM-1 AMAGAT-2'/) */ | |||
| 23291 | /* TKS*156 FORMAT(' ',10D13.5) */ | |||
| 23292 | /* TKS* OPEN(UNIT=10, FILE='OUT', STATUS='UNKNOWN') */ | |||
| 23293 | /* TKS* WRITE(10, 2929) (FREQ(I), ALFATOT(I), I=1, NF) */ | |||
| 23294 | /* TKS*C WRITE(10, 2929) (FREQ(I), QUAD(I), HEXA(I) ALFATOT(I), I=1, NF) */ | |||
| 23295 | /* TKS*2929 FORMAT(F10.3, E12.4) */ | |||
| 23296 | ||||
| 23297 | /* TKS* STOP */ | |||
| 23298 | ||||
| 23299 | ||||
| 23300 | ||||
| 23301 | /* TKS FILL OUTPUT VARIABLE */ | |||
| 23302 | // tksabs[0] = quad[0]; | |||
| 23303 | // tksabs[1] = hexa[0]; | |||
| 23304 | // tksabs[2] = dtrans[0]; | |||
| 23305 | // tksabs[3] = alfatot[0]; | |||
| 23306 | ret_val = alfatot[0]; | |||
| 23307 | /* TKS print*,'QUAD(1),HEXA(1),DTRANS(1)=',QUAD(1),HEXA(1),DTRANS(1) */ | |||
| 23308 | L999: | |||
| 23309 | return ret_val; | |||
| 23310 | } /* n2n2tks_ */ | |||
| 23311 | ||||
| 23312 | #undef temp | |||
| 23313 | #undef fnumin | |||
| 23314 | #undef fnumax | |||
| 23315 | #undef dnu | |||
| 23316 | #undef slit | |||
| 23317 | #undef dx | |||
| 23318 | #undef rsilo | |||
| 23319 | #undef omeg | |||
| 23320 | #undef rsi | |||
| 23321 | #undef rsigg | |||
| 23322 | #undef nsol | |||
| 23323 | #undef like | |||
| 23324 | #undef ik1k0 | |||
| 23325 | #undef ibound | |||
| 23326 | ||||
| 23327 | #define wnrmax3 (app3a_1app3a_.wnrmax3) | |||
| 23328 | #define rsilo (rsilo_1rsilo_.rsilo) | |||
| 23329 | #define omeg (bba_2(bba_.m_2).omeg) | |||
| 23330 | #define rsigg (bba_2(bba_.m_2).rsigg) | |||
| 23331 | #define beta (bba_2(bba_.m_2).beta) | |||
| 23332 | #define nsol (bbc_1bbc_.nsol) | |||
| 23333 | #define ibound (bbb_1bbb_.ibound) | |||
| 23334 | #define q1 (n2part_1(*(struct n2part_1_ *) &n2part_).q1) | |||
| 23335 | #define wn2 (n2part_1(*(struct n2part_1_ *) &n2part_).wn2) | |||
| 23336 | #define b01 (n2part_1(*(struct n2part_1_ *) &n2part_).b01) | |||
| 23337 | #define d01 (n2part_1(*(struct n2part_1_ *) &n2part_).d01) | |||
| 23338 | #define jrange2 (n2part_1(*(struct n2part_1_ *) &n2part_).jrange2) | |||
| 23339 | ||||
| 23340 | ||||
| 23341 | ||||
| 23342 | /* ########################################################################## */ | |||
| 23343 | ||||
| 23344 | ||||
| 23345 | /* Subroutine */ int addspec_(double *g0, double *ep, double * | |||
| 23346 | tau1, double *tau2, double *tau5, double *tau6, | |||
| 23347 | double *temp, int *nf, double *freq, double *abscoef, | |||
| 23348 | int * /* mp */, int *like, int *lambda1, int *lambda2, | |||
| 23349 | int *lambda, int * /* lvalue */) | |||
| 23350 | { | |||
| 23351 | /* Initialized data */ | |||
| 23352 | ||||
| 23353 | static double closchm = 2.68675484e19; | |||
| 23354 | static double boltzwn = .6950304; | |||
| 23355 | static double hbar = 1.054588757e-27; | |||
| 23356 | static double pi = 3.1415926535898; | |||
| 23357 | static double clight = 2.997925e10; | |||
| 23358 | ||||
| 23359 | /* Format strings */ | |||
| 23360 | /* | |||
| 23361 | static char fmt_20[] = "(/\002 LAMBDA1,LAMBDA2, LAMBDA,LVALUE=\002,2i3,2" | |||
| 23362 | "x,2i3,\002 COMPONENT.\002/15x,\002LINE SHAPE PARAMETERS:\002,6d1" | |||
| 23363 | "2.3,5x,\002G(0)=\002,d12.3/)"; | |||
| 23364 | */ | |||
| 23365 | ||||
| 23366 | /* System generated locals */ | |||
| 23367 | int s__1, s__2, s__3, s__4, s__5, s__6; | |||
| 23368 | double d__1, d__2; | |||
| 23369 | ||||
| 23370 | /* Builtin functions */ | |||
| 23371 | /* | |||
| 23372 | integer s_wsfe(cilist *), do_fio(integer *, char *, ftnlen), e_wsfe(void), | |||
| 23373 | s_wsle(cilist *), do_lio(integer *, integer *, char *, ftnlen), | |||
| 23374 | e_wsle(void); | |||
| 23375 | */ | |||
| 23376 | ||||
| 23377 | /* Local variables */ | |||
| 23378 | int list, jsum = 0; | |||
| 23379 | extern double bgama_(double *, double *, double *, | |||
| 23380 | double *, double *, double *, double *); | |||
| 23381 | int i__, j; | |||
| 23382 | double calib, p; | |||
| 23383 | int i1, j1, i2, j2; | |||
| 23384 | double p1, p2, omega1, omega2; | |||
| 23385 | int ip, jp, iq; | |||
| 23386 | double twopic; | |||
| 23387 | int jplusl, ip1, jp1, ip2, jp2; | |||
| 23388 | double fac, cgs, xbg, wkf, frq, wki; | |||
| 23389 | extern double specfct_(double *, double *, double *, | |||
| 23390 | double *, int *, double *), clebsqr_(int *, | |||
| 23391 | int *, int *); | |||
| 23392 | double cg1s, cg2s; | |||
| 23393 | ||||
| 23394 | /* Fortran I/O blocks */ | |||
| 23395 | /* | |||
| 23396 | static cilist io___38 = { 0, 6, 0, fmt_20, 0 }; | |||
| 23397 | static cilist io___40 = { 0, 6, 0, 0, 0 }; | |||
| 23398 | */ | |||
| 23399 | ||||
| 23400 | ||||
| 23401 | /* THIS PROGRAM GENERATES LISTING OF R-T CIA ALFA(OMEGA) */ | |||
| 23402 | /* IF EITHER LAMBDA1 OR LAMBDA2 EQUAL TO ZERO - SINGLE TRANSITIONS; */ | |||
| 23403 | /* DOUBLE TRANSITIONS ARE ASSUMED OTHERWISE. */ | |||
| 23404 | /* LIKE=1 FOR LIKE SYSTEMS (AS H2-H2), SET LIKE=0 ELSE. */ | |||
| 23405 | ||||
| 23406 | /* COMMON/BB/OMEG(201),RSI(201),RSIGG(201),NSOL,BETA */ | |||
| 23407 | /* COMMON/APP3/SLIT,DX,NSRI,WNRMAX3,NS,NSRIUP */ | |||
| 23408 | /* DIMENSION ABSCOEF(NF),FREQ(NF) */ | |||
| 23409 | /* Parameter adjustments */ | |||
| 23410 | --abscoef; | |||
| 23411 | --freq; | |||
| 23412 | ||||
| 23413 | /* Function Body */ | |||
| 23414 | ||||
| 23415 | twopic = 2. * pi * clight; | |||
| 23416 | if (*like != 1) { | |||
| ||||
| 23417 | *like = 0; | |||
| 23418 | } | |||
| 23419 | /* TAKE CARE OF FACTOR OF 1.E-60 HERE. */ | |||
| 23420 | /* Computing 2nd power */ | |||
| 23421 | d__1 = pi; | |||
| 23422 | /* Computing 2nd power */ | |||
| 23423 | d__2 = closchm * 1e-30; | |||
| 23424 | calib = twopic * (d__1 * d__1 * 4. / (hbar * 3. * clight)) * (d__2 * d__2) | |||
| 23425 | ; | |||
| 23426 | calib /= (double) (*like + 1); | |||
| 23427 | beta = 1. / (boltzwn * *temp); | |||
| 23428 | list = *nf; | |||
| 23429 | s__1 = list; | |||
| 23430 | for (i__ = 1; i__ <= s__1; ++i__) { | |||
| 23431 | /* L88: */ | |||
| 23432 | abscoef[i__] = 0.; | |||
| 23433 | } | |||
| 23434 | ||||
| 23435 | /* ROTATIONAL SPECTRUM FOR THE DETAILED LISTING ******************* */ | |||
| 23436 | /* | |||
| 23437 | s_wsfe(&io___38); | |||
| 23438 | do_fio(&c__1, (char *)&(*lambda1), (ftnlen)sizeof(int)); | |||
| 23439 | do_fio(&c__1, (char *)&(*lambda2), (ftnlen)sizeof(int)); | |||
| 23440 | do_fio(&c__1, (char *)&(*lambda), (ftnlen)sizeof(int)); | |||
| 23441 | do_fio(&c__1, (char *)&(*lvalue), (ftnlen)sizeof(int)); | |||
| 23442 | do_fio(&c__1, (char *)&(*g0), (ftnlen)sizeof(double)); | |||
| 23443 | do_fio(&c__1, (char *)&(*ep), (ftnlen)sizeof(double)); | |||
| 23444 | do_fio(&c__1, (char *)&(*tau1), (ftnlen)sizeof(double)); | |||
| 23445 | do_fio(&c__1, (char *)&(*tau2), (ftnlen)sizeof(double)); | |||
| 23446 | do_fio(&c__1, (char *)&(*tau5), (ftnlen)sizeof(double)); | |||
| 23447 | do_fio(&c__1, (char *)&(*tau6), (ftnlen)sizeof(double)); | |||
| 23448 | d__1 = *g0 * bgama_(&c_b47, tau1, tau2, ep, tau5, tau6, temp); | |||
| 23449 | do_fio(&c__1, (char *)&d__1, (ftnlen)sizeof(double)); | |||
| 23450 | e_wsfe(); | |||
| 23451 | */ | |||
| 23452 | if (*lambda1 == 0 || *lambda2 == 0) { | |||
| 23453 | goto L152; | |||
| 23454 | } | |||
| 23455 | jplusl = jrange2 + max(*lambda1,*lambda2)((*lambda1) >= (*lambda2) ? (*lambda1) : (*lambda2)); | |||
| 23456 | ||||
| 23457 | /* | |||
| 23458 | s_wsle(&io___40); | |||
| 23459 | do_lio(&c__9, &c__1, "LAMBDA1,LAMBDA2,ABSCOEF(1)=", (ftnlen)27); | |||
| 23460 | do_lio(&c__2, &c__1, (char *)&(*lambda1), (ftnlen)sizeof(int)); | |||
| 23461 | do_lio(&c__2, &c__1, (char *)&(*lambda2), (ftnlen)sizeof(int)); | |||
| 23462 | do_lio(&c__5, &c__1, (char *)&abscoef[1], (ftnlen)sizeof(double)); | |||
| 23463 | e_wsle(); | |||
| 23464 | */ | |||
| 23465 | jsum = 0; | |||
| 23466 | s__1 = jrange2; | |||
| 23467 | for (i1 = 1; i1 <= s__1; ++i1) { | |||
| 23468 | j1 = i1 - 1; | |||
| 23469 | s__2 = jplusl; | |||
| 23470 | for (ip1 = 1; ip1 <= s__2; ++ip1) { | |||
| 23471 | jp1 = ip1 - 1; | |||
| 23472 | cg1s = clebsqr_(&j1, lambda1, &jp1); | |||
| 23473 | if (cg1s <= 0.) { | |||
| 23474 | goto L150; | |||
| 23475 | } else { | |||
| 23476 | goto L130; | |||
| 23477 | } | |||
| 23478 | L130: | |||
| 23479 | s__3 = j1 * (j1 + 1); | |||
| 23480 | p1 = (double) (2 * j1 + 1) * wn2[1 + j1 % 2 - 1] * exp( | |||
| 23481 | -1.4387859 / *temp * ((b01 - (double) s__3 * d01) * ( | |||
| 23482 | double) s__3)) / q1; | |||
| 23483 | ++jsum; | |||
| 23484 | s__3 = jp1 * ip1; | |||
| 23485 | s__4 = j1 * i1; | |||
| 23486 | omega1 = (b01 - (double) s__3 * d01) * (double) s__3 - ( | |||
| 23487 | b01 - (double) s__4 * d01) * (double) s__4; | |||
| 23488 | s__3 = jrange2; | |||
| 23489 | for (i2 = 1; i2 <= s__3; ++i2) { | |||
| 23490 | j2 = i2 - 1; | |||
| 23491 | s__4 = jplusl; | |||
| 23492 | for (ip2 = 1; ip2 <= s__4; ++ip2) { | |||
| 23493 | jp2 = ip2 - 1; | |||
| 23494 | cg2s = clebsqr_(&j2, lambda2, &jp2); | |||
| 23495 | if (cg2s <= 0.) { | |||
| 23496 | goto L148; | |||
| 23497 | } else { | |||
| 23498 | goto L132; | |||
| 23499 | } | |||
| 23500 | L132: | |||
| 23501 | s__5 = j2 * (j2 + 1); | |||
| 23502 | p2 = (double) (2 * j2 + 1) * wn2[1 + j2 % 2 - 1] * | |||
| 23503 | exp(-1.4387859 / *temp * ((b01 - (double) | |||
| 23504 | s__5 * d01) * (double) s__5)) / q1; | |||
| 23505 | s__5 = jp2 * ip2; | |||
| 23506 | s__6 = j2 * i2; | |||
| 23507 | omega2 = (b01 - (double) s__5 * d01) * (double) | |||
| 23508 | s__5 - (b01 - (double) s__6 * d01) * ( | |||
| 23509 | double) s__6; | |||
| 23510 | fac = calib * p1 * p2 * cg1s * cg2s; | |||
| 23511 | s__5 = list; | |||
| 23512 | for (i__ = 1; i__ <= s__5; ++i__) { | |||
| 23513 | frq = freq[i__] - omega1 - omega2; | |||
| 23514 | wki = freq[i__] * (1. - exp(-beta * freq[i__])); | |||
| 23515 | wkf = wki * fac; | |||
| 23516 | xbg = *g0 * bgama_(&frq, tau1, tau2, ep, tau5, tau6, | |||
| 23517 | temp); | |||
| 23518 | if (ibound == 0) { | |||
| 23519 | goto L555; | |||
| 23520 | } | |||
| 23521 | if (abs(frq)((frq) >= 0 ? (frq) : -(frq)) <= wnrmax3) { | |||
| 23522 | xbg += specfct_(&frq, omeg, rsilo, rsigg, &nsol, & | |||
| 23523 | beta); | |||
| 23524 | } | |||
| 23525 | L555: | |||
| 23526 | abscoef[i__] += xbg * wkf; | |||
| 23527 | /* L146: */ | |||
| 23528 | } | |||
| 23529 | L148: | |||
| 23530 | ; | |||
| 23531 | } | |||
| 23532 | } | |||
| 23533 | L150: | |||
| 23534 | ; | |||
| 23535 | } | |||
| 23536 | } | |||
| 23537 | goto L2222; | |||
| 23538 | /* SINGLE TRANSITIONS AT NITROGEN'S ROTATIONAL FREQUENCIES */ | |||
| 23539 | /* ======================================================= */ | |||
| 23540 | L152: | |||
| 23541 | jplusl = jrange2 + *lambda; | |||
| 23542 | s__2 = jrange2; | |||
| 23543 | for (i__ = 1; i__ <= s__2; ++i__) { | |||
| 23544 | j = i__ - 1; | |||
| 23545 | s__1 = jplusl; | |||
| 23546 | for (ip = 1; ip <= s__1; ++ip) { | |||
| 23547 | jp = ip - 1; | |||
| 23548 | cgs = clebsqr_(&j, lambda, &jp); | |||
| 23549 | if (cgs <= 0.) { | |||
| 23550 | goto L200; | |||
| 23551 | } else { | |||
| 23552 | goto L210; | |||
| 23553 | } | |||
| 23554 | L210: | |||
| 23555 | s__4 = j * (j + 1); | |||
| 23556 | p = (double) (2 * j + 1) * wn2[1 + j % 2 - 1] * exp( | |||
| 23557 | -1.4387859 / *temp * ((b01 - (double) s__4 * d01) * ( | |||
| 23558 | double) s__4)) / q1; | |||
| 23559 | ++jsum; | |||
| 23560 | s__4 = jp * ip; | |||
| 23561 | s__3 = j * i__; | |||
| 23562 | omega1 = (b01 - (double) s__4 * d01) * (double) s__4 - ( | |||
| 23563 | b01 - (double) s__3 * d01) * (double) s__3; | |||
| 23564 | fac = calib * p * cgs; | |||
| 23565 | s__4 = list; | |||
| 23566 | for (iq = 1; iq <= s__4; ++iq) { | |||
| 23567 | frq = freq[iq] - omega1; | |||
| 23568 | /* XWKI=FREQ(IQ)*(1.-EXP(-BETA*FREQ(IQ))) */ | |||
| 23569 | wki = freq[iq] * (1. - exp(-beta * freq[iq])); | |||
| 23570 | wkf = wki * fac; | |||
| 23571 | xbg = *g0 * bgama_(&frq, tau1, tau2, ep, tau5, tau6, temp); | |||
| 23572 | if (ibound == 0) { | |||
| 23573 | goto L444; | |||
| 23574 | } | |||
| 23575 | if (abs(frq)((frq) >= 0 ? (frq) : -(frq)) <= wnrmax3) { | |||
| 23576 | xbg += specfct_(&frq, omeg, rsilo, rsigg, &nsol, &beta); | |||
| 23577 | } | |||
| 23578 | L444: | |||
| 23579 | abscoef[iq] += xbg * wkf; | |||
| 23580 | /* L199: */ | |||
| 23581 | } | |||
| 23582 | L200: | |||
| 23583 | ; | |||
| 23584 | } | |||
| 23585 | } | |||
| 23586 | ||||
| 23587 | L2222: | |||
| 23588 | /* TKS 2222 PRINT 44,(ABSCOEF(I),I=1,LIST) */ | |||
| 23589 | /* L44: */ | |||
| 23590 | return 0; | |||
| 23591 | } /* addspec_ */ | |||
| 23592 | ||||
| 23593 | #undef wnrmax3 | |||
| 23594 | #undef rsilo | |||
| 23595 | #undef omeg | |||
| 23596 | #undef rsigg | |||
| 23597 | #undef beta | |||
| 23598 | #undef nsol | |||
| 23599 | #undef ibound | |||
| 23600 | #undef q1 | |||
| 23601 | #undef wn2 | |||
| 23602 | #undef b01 | |||
| 23603 | #undef d01 | |||
| 23604 | #undef jrange2 | |||
| 23605 | ||||
| 23606 | #define q (n2part_2(*(struct n2part_2_ *) &n2part_).q) | |||
| 23607 | #define wn2 (n2part_2(*(struct n2part_2_ *) &n2part_).wn2) | |||
| 23608 | #define b0 (n2part_2(*(struct n2part_2_ *) &n2part_).b0) | |||
| 23609 | #define d0 (n2part_2(*(struct n2part_2_ *) &n2part_).d0) | |||
| 23610 | #define jrange1 (n2part_2(*(struct n2part_2_ *) &n2part_).jrange1) | |||
| 23611 | ||||
| 23612 | /* Subroutine */ int partsum_(double *temp) | |||
| 23613 | { | |||
| 23614 | /* System generated locals */ | |||
| 23615 | int s__1; | |||
| 23616 | ||||
| 23617 | /* Local variables */ | |||
| 23618 | int j; | |||
| 23619 | double dq; | |||
| 23620 | ||||
| 23621 | /* N2 ROTATIONAL PARTITION SUM Q = Q(T). */ | |||
| 23622 | ||||
| 23623 | ||||
| 23624 | ||||
| 23625 | /* Q,B0,D0,WN2 - PARTITION FCT., ROT.CONSTANTS, WEIGHTS FOR N2 */ | |||
| 23626 | q = 0.; | |||
| 23627 | j = 0; | |||
| 23628 | L50: | |||
| 23629 | s__1 = j * (j + 1); | |||
| 23630 | dq = (double) (2 * j + 1) * wn2[1 + j % 2 - 1] * exp(-1.4387859 * (( | |||
| 23631 | b0 - (double) s__1 * d0) * (double) s__1) / *temp); | |||
| 23632 | q += dq; | |||
| 23633 | ++j; | |||
| 23634 | if (dq > q / 900.) { | |||
| 23635 | goto L50; | |||
| 23636 | } | |||
| 23637 | jrange1 = j; | |||
| 23638 | /* TKS PRINT 30, Q, JRANGE1 */ | |||
| 23639 | ||||
| 23640 | /* L30: */ | |||
| 23641 | return 0; | |||
| 23642 | } /* partsum_ */ | |||
| 23643 | ||||
| 23644 | #undef q | |||
| 23645 | #undef wn2 | |||
| 23646 | #undef b0 | |||
| 23647 | #undef d0 | |||
| 23648 | #undef jrange1 | |||
| 23649 | ||||
| 23650 | #define slit (app3a_1app3a_.slit) | |||
| 23651 | #define dx (app3a_1app3a_.dx) | |||
| 23652 | #define wnrmax3 (app3a_1app3a_.wnrmax3) | |||
| 23653 | #define nsri (app3b_1app3b_.nsri) | |||
| 23654 | #define ns (app3b_1app3b_.ns) | |||
| 23655 | #define nsriup (app3b_1app3b_.nsriup) | |||
| 23656 | #define rsi (bl3_1(bl3_.m_1).rsi) | |||
| 23657 | ||||
| 23658 | /* Subroutine */ int profile_(double *x, double *y) | |||
| 23659 | { | |||
| 23660 | /* System generated locals */ | |||
| 23661 | int s__1; | |||
| 23662 | ||||
| 23663 | /* Local variables */ | |||
| 23664 | int i__; | |||
| 23665 | double slope; | |||
| 23666 | int n1; | |||
| 23667 | double x0; | |||
| 23668 | int nc; | |||
| 23669 | double dr; | |||
| 23670 | int no; | |||
| 23671 | double xi; | |||
| 23672 | int nu; | |||
| 23673 | ||||
| 23674 | /* A TRIANGULAR SLIT FUNCTION IS USED. */ | |||
| 23675 | ||||
| 23676 | ||||
| 23677 | /* COMMON/APP3/SLIT,DX,NSRI,WNRMAX3,NS,NSRIUP */ | |||
| 23678 | ||||
| 23679 | if (*y < 0.) { | |||
| 23680 | goto L105; | |||
| 23681 | } else if (*y == 0) { | |||
| 23682 | goto L106; | |||
| 23683 | } else { | |||
| 23684 | goto L1; | |||
| 23685 | } | |||
| 23686 | L1: | |||
| 23687 | x0 = nsri + 1. + *x / dx; | |||
| 23688 | nc = (int) x0; | |||
| 23689 | n1 = nc + 1; | |||
| 23690 | slope = *y / slit; | |||
| 23691 | nu = (int) (x0 - ns); | |||
| 23692 | if (nu < 1) { | |||
| 23693 | nu = 1; | |||
| 23694 | } | |||
| 23695 | if (nu > nsriup) { | |||
| 23696 | return 0; | |||
| 23697 | } | |||
| 23698 | no = (int) (x0 + ns); | |||
| 23699 | if (no > nsriup) { | |||
| 23700 | no = nsriup; | |||
| 23701 | } | |||
| 23702 | if (no < 1) { | |||
| 23703 | return 0; | |||
| 23704 | } | |||
| 23705 | if (nc > nsriup) { | |||
| 23706 | nc = nsriup; | |||
| 23707 | } | |||
| 23708 | if (nc <= 1) { | |||
| 23709 | goto L101; | |||
| 23710 | } | |||
| 23711 | s__1 = nc; | |||
| 23712 | for (i__ = nu; i__ <= s__1; ++i__) { | |||
| 23713 | xi = (i__ - 1.) * dx - wnrmax3; | |||
| 23714 | dr = slope * (xi - (*x - slit)); | |||
| 23715 | if (dr <= 0.) { | |||
| 23716 | goto L100; | |||
| 23717 | } | |||
| 23718 | rsi[i__ - 1] += dr; | |||
| 23719 | L100: | |||
| 23720 | ; | |||
| 23721 | } | |||
| 23722 | L101: | |||
| 23723 | ||||
| 23724 | if (nc >= nsriup) { | |||
| 23725 | return 0; | |||
| 23726 | } | |||
| 23727 | if (n1 < 1) { | |||
| 23728 | n1 = 1; | |||
| 23729 | } | |||
| 23730 | s__1 = no; | |||
| 23731 | for (i__ = n1; i__ <= s__1; ++i__) { | |||
| 23732 | xi = (i__ - 1.) * dx - wnrmax3; | |||
| 23733 | dr = *y - slope * (xi - *x); | |||
| 23734 | if (dr <= 0.) { | |||
| 23735 | goto L102; | |||
| 23736 | } | |||
| 23737 | rsi[i__ - 1] += dr; | |||
| 23738 | L102: | |||
| 23739 | ; | |||
| 23740 | } | |||
| 23741 | return 0; | |||
| 23742 | L105: | |||
| 23743 | /* TKS 105 PRINT 10,SLIT */ | |||
| 23744 | /* TKS 10 FORMAT(/' A TRIANGULAR SLIT FUNCTION OF',F6.3,' CM-1 HALFWIDTH IS */ | |||
| 23745 | /* TKS ' USED'/) */ | |||
| 23746 | L106: | |||
| 23747 | return 0; | |||
| 23748 | } /* profile_ */ | |||
| 23749 | ||||
| 23750 | #undef slit | |||
| 23751 | #undef dx | |||
| 23752 | #undef wnrmax3 | |||
| 23753 | #undef nsri | |||
| 23754 | #undef ns | |||
| 23755 | #undef nsriup | |||
| 23756 | #undef rsi | |||
| 23757 | ||||
| 23758 | ||||
| 23759 | /* X FUNCTION SPECFCT(FREQ,OMEGA,PHI,PHI2,N,RTEMP) */ | |||
| 23760 | ||||
| 23761 | double specfct_(double *freq, double *omega, double *phi, | |||
| 23762 | double *phi2, int *n, double *rtemp) | |||
| 23763 | { | |||
| 23764 | /* System generated locals */ | |||
| 23765 | double ret_val; | |||
| 23766 | ||||
| 23767 | /* Local variables */ | |||
| 23768 | double tfac, f, gp, si; | |||
| 23769 | int nr; | |||
| 23770 | extern /* Subroutine */ int ixpolat_(int *, int *, int *, | |||
| 23771 | double *, double *, double *, double *, | |||
| 23772 | double *, double *, int *, double *); | |||
| 23773 | ||||
| 23774 | ||||
| 23775 | /* THIS INTERPOLATES THE SPECTRAL FUNCTION PHI(FREQ) DEFINED AT */ | |||
| 23776 | /* OMEGA(N) AS PHI(N). PHI2 IS THE SECOND DERIVATIVE AT OMEGA */ | |||
| 23777 | /* WHICH MUST BE OBTAINED FIRST (USE SPLINE FOR THAT PURPOSE). */ | |||
| 23778 | /* RTEMP IS THE RECIPROCAL TEMPERATURE IN CM-1 UNITS. */ | |||
| 23779 | /* NOTE THAT WE INTERPOLATE 1.E80 TIMES THE LOGARITHM OF PHI(OMEGA) */ | |||
| 23780 | /* NOTE THAT IN GSO'S REVISION, THIS FACTOR IS REMOVED. */ | |||
| 23781 | /* (REVISION MODIFIED) */ | |||
| 23782 | ||||
| 23783 | ||||
| 23784 | ||||
| 23785 | /* PRINT*,'FREQ =',FREQ */ | |||
| 23786 | /* PRINT*,'OMEGA=',OMEGA */ | |||
| 23787 | /* PRINT*,'RTEMP=',RTEMP */ | |||
| 23788 | /* PRINT*,'PHI =',PHI */ | |||
| 23789 | /* PRINT*,'PHI2 =',PHI2 */ | |||
| 23790 | /* Parameter adjustments */ | |||
| 23791 | --phi2; | |||
| 23792 | --phi; | |||
| 23793 | --omega; | |||
| 23794 | ||||
| 23795 | /* Function Body */ | |||
| 23796 | tfac = 0.; | |||
| 23797 | f = *freq; | |||
| 23798 | if (f >= 0.) { | |||
| 23799 | goto L20; | |||
| 23800 | } else { | |||
| 23801 | goto L10; | |||
| 23802 | } | |||
| 23803 | L10: | |||
| 23804 | f = abs(f)((f) >= 0 ? (f) : -(f)); | |||
| 23805 | tfac = -(*rtemp) * f; | |||
| 23806 | L20: | |||
| 23807 | if (f <= omega[*n]) { | |||
| 23808 | goto L30; | |||
| 23809 | } | |||
| 23810 | ret_val = exp(-(phi[*n - 1] - phi[*n]) * (f - omega[*n]) / (omega[*n] - | |||
| 23811 | omega[*n - 1]) + phi[*n] + tfac) * 1e-80; | |||
| 23812 | /* print*,' (A) SPECFCT=',SPECFCT */ | |||
| 23813 | /* X SPECFCT=DEXP(-(PHI(N-1)-PHI(N))*(F-OMEGA(N))/ */ | |||
| 23814 | /* X $(OMEGA(N)-OMEGA(N-1))+PHI(N)+TFAC) */ | |||
| 23815 | return ret_val; | |||
| 23816 | /* 30 PRINT*,'SI,NR,PHI2=', */ | |||
| 23817 | /* & SI,NR,PHI2 */ | |||
| 23818 | /* CALL IXPOLAT(N,1,0,1.D-6,OMEGA,PHI,F,GP,SI,NR,PHI2) */ | |||
| 23819 | L30: | |||
| 23820 | ixpolat_(n, &cs__1, &cs__0, &c_b183, &omega[1], &phi[1], &f, &gp, &si, & | |||
| 23821 | nr, &phi2[1]); | |||
| 23822 | ret_val = exp(tfac + gp) * 1e-80; | |||
| ||||
| 23823 | /* X SPECFCT=DEXP(TFAC+GP) */ | |||
| 23824 | /* print*,' (B) GP,SPECFCT=',GP,SPECFCT */ | |||
| 23825 | ||||
| 23826 | return ret_val; | |||
| 23827 | } /* specfct_ */ | |||
| 23828 | #define slit (app3a_1app3a_.slit) | |||
| 23829 | #define dx (app3a_1app3a_.dx) | |||
| 23830 | #define wnrmax3 (app3a_1app3a_.wnrmax3) | |||
| 23831 | #define nsri (app3b_1app3b_.nsri) | |||
| 23832 | #define ns (app3b_1app3b_.ns) | |||
| 23833 | #define nsriup (app3b_1app3b_.nsriup) | |||
| 23834 | #define eb (energ_1(*(struct energ_1_ *) &energ_).eb) | |||
| 23835 | #define niv (energ_1(*(struct energ_1_ *) &energ_).niv) | |||
| 23836 | #define nlines (dimer_1dimer_.nlines) | |||
| 23837 | #define rsibb (bl3_2(bl3_.m_2).rsibb) | |||
| 23838 | #define ldelvi (bbbb_2(bbbb_.m_2).ldelvi) | |||
| 23839 | #define ivi (bbbb_2(bbbb_.m_2).ivi) | |||
| 23840 | #define ivip (bbbb_2(bbbb_.m_2).ivip) | |||
| 23841 | #define ldelel (bbbb_2(bbbb_.m_2).ldelel) | |||
| 23842 | #define ll (bbbb_2(bbbb_.m_2).ll) | |||
| 23843 | #define llp (bbbb_2(bbbb_.m_2).llp) | |||
| 23844 | ||||
| 23845 | /* Subroutine */ int bound32_(double *temp, double *rsi, int * | |||
| 23846 | nsol) | |||
| 23847 | { | |||
| 23848 | /* Initialized data */ | |||
| 23849 | ||||
| 23850 | static int ldelvis[63] = { 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1, | |||
| 23851 | 1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3, | |||
| 23852 | 3,4,4,4,4,4,4,4,4 }; | |||
| 23853 | static int ivis[63] = { 0,0,1,1,2,2,3,3,4,4,0,0,0,0,1,1,1,1,2,2,2,2, | |||
| 23854 | 3,3,3,3,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,0,1,2,0,1,2,0,1,0,1,0,1,2, | |||
| 23855 | 0,1,0,1,0,1,0,1 }; | |||
| 23856 | static int ivips[63] = { 0,0,1,1,2,2,3,3,4,4,1,1,1,1,2,2,2,2,3,3,3,3, | |||
| 23857 | 4,4,4,4,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,3,4,5,3,4,5,3,4,3,4,3,4,5, | |||
| 23858 | 4,5,4,5,4,5,4,5 }; | |||
| 23859 | static int ldelels[63] = { 1,3,1,3,1,3,1,3,1,3,-3,-1,1,3,-3,-1,1,3, | |||
| 23860 | -3,-1,1,3,3,1,-1,-3,-3,-1,1,3,-3,-1,1,3,-3,-1,1,3,-1,-3,1,3,1,1,1, | |||
| 23861 | -1,-1,-1,-3,-3,3,3,-3,-3,-3,-3,-3,3,3,1,1,-1,-1 }; | |||
| 23862 | static double as[63] = { 4.4844e-40,4.4356e-40,2.9345e-40,2.885e-40, | |||
| 23863 | 1.6441e-40,1.5899e-40,7.2882e-41,6.7748e-41,1.0378e-41,1.3041e-42, | |||
| 23864 | 1.5006e-41,1.537e-41,1.6139e-41,1.7143e-41,1.9985e-41,2.0169e-41, | |||
| 23865 | 2.0994e-41,2.2094e-41,1.636e-41,1.6281e-41,1.6714e-41,1.7326e-41, | |||
| 23866 | 8.0425e-42,8.0862e-42,8.0093e-42,8.1366e-42,2.4471e-42,2.5406e-42, | |||
| 23867 | 2.6629e-42,2.8064e-42,4.6227e-42,4.715e-42,4.8513e-42,5.0133e-42, | |||
| 23868 | 3.9968e-42,3.984e-42,3.981e-42,3.9687e-42,1.1806e-42,1.3458e-42, | |||
| 23869 | 3.8746e-42,3.9219e-42,7.3334e-43,1.339e-42,1.3041e-42,7.1401e-43, | |||
| 23870 | 1.3461e-42,6.5776e-43,6.9847e-43,1.3517e-42,7.5545e-43,1.3268e-42, | |||
| 23871 | 6.9847e-43,1.3517e-42,7.464e-43,2.1322e-43,2.6037e-43,2.0823e-43, | |||
| 23872 | 2.0632e-43,2.1067e-43,2.0531e-43,2.1218e-43,2.3006e-43 }; | |||
| 23873 | static double bs[63] = { 4.3e-4,4.6e-4,8.3e-4,8.9e-4,.0017,.00186, | |||
| 23874 | .0041,.00457,0.,0.,9.99e-4,5.23e-4,1.49e-4,-1.68e-4,.001837, | |||
| 23875 | .001153,6.6e-4,2.54e-4,.003603,.002677,.002101,.001738,.00595, | |||
| 23876 | .006843,0.,.007035,.001025,6.42e-4,2.54e-4,-1.64e-4,.002342, | |||
| 23877 | .001975,.00164,.001328,.004943,.004999,.005461,.006839,0.,.010993, | |||
| 23878 | 0.,0.,.001367,.005262,0.,.001601,.00451,0.,.001828,.004175,.04816, | |||
| 23879 | .007033,.001828,.004175,.009338,.003733,.008508,.006979,0., | |||
| 23880 | .005035,0.,.004169,0. }; | |||
| 23881 | static double twopic = 1.88365183e11; | |||
| 23882 | static double pi = 3.141592654; | |||
| 23883 | ||||
| 23884 | /* System generated locals */ | |||
| 23885 | int s__1; | |||
| 23886 | double d__1; | |||
| 23887 | ||||
| 23888 | /* Local variables */ | |||
| 23889 | double alfa; | |||
| 23890 | int nnii; | |||
| 23891 | //int nsol2; | |||
| 23892 | double a, b; | |||
| 23893 | int i__, l, n; | |||
| 23894 | double stoke, stoki, am, pf; | |||
| 23895 | int lp; | |||
| 23896 | double rm; | |||
| 23897 | int nr, iv; | |||
| 23898 | double stokip; | |||
| 23899 | int ivp; | |||
| 23900 | extern double clebsqr_(int *, int *, int *); | |||
| 23901 | extern /* Subroutine */ int profile_(double *, double *); | |||
| 23902 | ||||
| 23903 | ||||
| 23904 | #define eb_ref(a_1,a_2) eb[(a_2)*41 + a_1 - 42] | |||
| 23905 | ||||
| 23906 | ||||
| 23907 | ||||
| 23908 | /* COMMON/APP3/SLIT,DX,NSRI,WNRMAX3,NS,NSRIUP */ | |||
| 23909 | ||||
| 23910 | ||||
| 23911 | /* STORED VALUES */ | |||
| 23912 | /* Parameter adjustments */ | |||
| 23913 | --rsi; | |||
| 23914 | ||||
| 23915 | /* Function Body */ | |||
| 23916 | ||||
| 23917 | ||||
| 23918 | /* EB(I,K) - BOUND ENERGIES */ | |||
| 23919 | /* AM = (MTX.EL. (L,BETA,L') )**2 */ | |||
| 23920 | /* M(L,L',V,V') OF PAPER (*) ARE TO BE CORRECTED: */ | |||
| 23921 | /* M(L,L',V,V') = AM * (2L+1) * C(L,3,L')**2 */ | |||
| 23922 | /* NSRI - HOW MANY POINTS FOR B-B SPECTRAL FUNCTION TO BE GIVEN */ | |||
| 23923 | /* WNRMAX3 - THE FREQUENCY RANGE OF B-B CONTRIBUTION */ | |||
| 23924 | /* SLIT- THE HALFWIDTH OF THE SPECTRAL PROFILE CONVOLUTED WITH */ | |||
| 23925 | /* B-B SPECTRUM, IN [CM-1]. */ | |||
| 23926 | /* A,B, COEFFICIENTS , EQ. 7, A.BORYSOW, L.FROMMHOLD, */ | |||
| 23927 | /* AP. J. VOL.311, 1043-1057, (1986) */ | |||
| 23928 | ||||
| 23929 | nsri = 190; | |||
| 23930 | wnrmax3 = 45.; | |||
| 23931 | nsriup = (nsri << 1) + 1; | |||
| 23932 | dx = wnrmax3 / (double) nsri; | |||
| 23933 | ns = (int) (slit / dx); | |||
| 23934 | ||||
| 23935 | for (i__ = 1; i__ <= 401; ++i__) { | |||
| 23936 | /* L300: */ | |||
| 23937 | rsibb[i__ - 1] = 0.; | |||
| 23938 | } | |||
| 23939 | ||||
| 23940 | alfa = 1. / (*temp * .69519); | |||
| 23941 | rm = 2.32498211e-23; | |||
| 23942 | /* RM - REDUCED MASS FOR N2-N2 */ | |||
| 23943 | ||||
| 23944 | d__1 = rm * 1.380662e-16 * *temp * 2. * pi / 4.3906208382975998e-53; | |||
| 23945 | pf = pow(d__1, c_b186); | |||
| 23946 | /* SCALE DOWN BY 1.D60 */ | |||
| 23947 | pf *= 1e-60; | |||
| 23948 | ||||
| 23949 | nr = 0; | |||
| 23950 | L555: | |||
| 23951 | ++nr; | |||
| 23952 | ldelvi = ldelvis[nr - 1]; | |||
| 23953 | ivi = ivis[nr - 1]; | |||
| 23954 | ivip = ivips[nr - 1]; | |||
| 23955 | ldelel = ldelels[nr - 1]; | |||
| 23956 | a = as[nr - 1]; | |||
| 23957 | b = bs[nr - 1]; | |||
| 23958 | /* WRITE (6,334) LDELVI,IVI,IVIP, LDELEL,A,B */ | |||
| 23959 | /* L334: */ | |||
| 23960 | ||||
| 23961 | /* LDELVI=DELTA(V)=V'-V */ | |||
| 23962 | /* IVI = V; IVIP = V' */ | |||
| 23963 | /* LDELEL = DELTA(L) = L'-L */ | |||
| 23964 | ||||
| 23965 | iv = ivi + 1; | |||
| 23966 | ivp = ivip + 1; | |||
| 23967 | /* THESE ARE ENERGY COLUMNS (V, V') */ | |||
| 23968 | ||||
| 23969 | nnii = niv[iv - 1]; | |||
| 23970 | ||||
| 23971 | s__1 = nnii; | |||
| 23972 | for (l = 1; l <= s__1; ++l) { | |||
| 23973 | /* LOOP OVER INITIAL L-VALUES... */ | |||
| 23974 | ||||
| 23975 | am = a * exp(-b * (double) ((l - 1) * l)); | |||
| 23976 | /* L - NUMBER OF ROW, (L-1) - ROTATIONAL LEVEL */ | |||
| 23977 | lp = l + ldelel; | |||
| 23978 | ll = l - 1; | |||
| 23979 | llp = lp - 1; | |||
| 23980 | /* LL,LLP ARE INITIAL L AND FINAL L' ANGULAR MOMENTUM QUANTUM NUMBERS */ | |||
| 23981 | ||||
| 23982 | if (lp > niv[ivp - 1] || lp < 1) { | |||
| 23983 | goto L20; | |||
| 23984 | } | |||
| 23985 | if (eb_ref(lp, ivp) == 0.) { | |||
| 23986 | goto L20; | |||
| 23987 | } | |||
| 23988 | if (eb_ref(l, iv) == 0.) { | |||
| 23989 | goto L20; | |||
| 23990 | } | |||
| 23991 | stoke = eb_ref(lp, ivp) - eb_ref(l, iv); | |||
| 23992 | ||||
| 23993 | stoki = am * exp(-alfa * eb_ref(l, iv)) / pf * (double) ((ll << 1) | |||
| 23994 | + 1) * clebsqr_(&ll, &cs__3, &llp); | |||
| 23995 | ||||
| 23996 | profile_(&stoke, &stoki); | |||
| 23997 | if (stoki > 0.) { | |||
| 23998 | ++nlines; | |||
| 23999 | } | |||
| 24000 | ||||
| 24001 | stokip = am * exp(-alfa * eb_ref(lp, ivp)) / pf * (double) ((llp | |||
| 24002 | << 1) + 1) * clebsqr_(&llp, &cs__3, &ll); | |||
| 24003 | ||||
| 24004 | d__1 = -stoke; | |||
| 24005 | profile_(&d__1, &stokip); | |||
| 24006 | if (stokip > 0.) { | |||
| 24007 | ++nlines; | |||
| 24008 | } | |||
| 24009 | ||||
| 24010 | L20: | |||
| 24011 | ; | |||
| 24012 | } | |||
| 24013 | if (nr == 63) { | |||
| 24014 | goto L56; | |||
| 24015 | } | |||
| 24016 | goto L555; | |||
| 24017 | L56: | |||
| 24018 | ||||
| 24019 | /* 32 ENTRIES FOR (3220)+(3202) IN TABLE 6, 63 IN ALL: */ | |||
| 24020 | /* DATA EXPANDED AND INCLUDE NOW ALL POSSIBLE B-B TRANSITIONS */ | |||
| 24021 | ||||
| 24022 | s__1 = nsriup; | |||
| 24023 | for (n = 1; n <= s__1; ++n) { | |||
| 24024 | /* L90: */ | |||
| 24025 | rsibb[n - 1] = rsibb[n - 1] / twopic / slit; | |||
| 24026 | } | |||
| 24027 | ||||
| 24028 | *nsol = nsri + 1; | |||
| 24029 | //nsol2 = *nsol + 1; | |||
| 24030 | /* RSI - CONTRIBUTION FOR POSITIVE FREQUENCY SHIFTS */ | |||
| 24031 | ||||
| 24032 | s__1 = *nsol; | |||
| 24033 | for (i__ = 1; i__ <= s__1; ++i__) { | |||
| 24034 | /* L22: */ | |||
| 24035 | rsi[i__] = rsibb[*nsol - 1 + i__ - 1]; | |||
| 24036 | } | |||
| 24037 | ||||
| 24038 | /* PRINT 999, (RSI(I),I=1,NSOL) */ | |||
| 24039 | /* L999: */ | |||
| 24040 | ||||
| 24041 | return 0; | |||
| 24042 | } /* bound32_ */ | |||
| 24043 | ||||
| 24044 | #undef slit | |||
| 24045 | #undef dx | |||
| 24046 | #undef wnrmax3 | |||
| 24047 | #undef nsri | |||
| 24048 | #undef ns | |||
| 24049 | #undef nsriup | |||
| 24050 | #undef eb | |||
| 24051 | #undef niv | |||
| 24052 | #undef nlines | |||
| 24053 | #undef rsibb | |||
| 24054 | #undef ldelvi | |||
| 24055 | #undef ivi | |||
| 24056 | #undef ivip | |||
| 24057 | #undef ldelel | |||
| 24058 | #undef ll | |||
| 24059 | #undef llp | |||
| 24060 | ||||
| 24061 | ||||
| 24062 | #undef eb_ref | |||
| 24063 | ||||
| 24064 | #define slit (app3a_1app3a_.slit) | |||
| 24065 | #define dx (app3a_1app3a_.dx) | |||
| 24066 | #define wnrmax3 (app3a_1app3a_.wnrmax3) | |||
| 24067 | #define nsri (app3b_1app3b_.nsri) | |||
| 24068 | #define ns (app3b_1app3b_.ns) | |||
| 24069 | #define nsriup (app3b_1app3b_.nsriup) | |||
| 24070 | #define eb (energ_1(*(struct energ_1_ *) &energ_).eb) | |||
| 24071 | #define niv (energ_1(*(struct energ_1_ *) &energ_).niv) | |||
| 24072 | #define nlines (dimer_1dimer_.nlines) | |||
| 24073 | #define rsibb (bl3_2(bl3_.m_2).rsibb) | |||
| 24074 | ||||
| 24075 | /* Subroutine */ int bound54_(double *temp, double *rsi, int * | |||
| 24076 | nsol) | |||
| 24077 | { | |||
| 24078 | /* Initialized data */ | |||
| 24079 | ||||
| 24080 | // static int ldelvis[54] = { 0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1, | |||
| 24081 | // 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 | |||
| 24082 | // }; | |||
| 24083 | static int ivis[54] = { 0,0,0,1,1,1,2,2,2,3,3,3,0,0,0,0,0,0,1,1,1,1, | |||
| 24084 | 1,1,2,2,2,2,2,2,3,3,3,3,3,3,0,0,0,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2 }; | |||
| 24085 | static int ivips[54] = { 0,0,0,1,1,1,2,2,2,3,3,3,1,1,1,1,1,1,2,2,2,2, | |||
| 24086 | 2,2,3,3,3,3,3,3,4,4,4,4,4,4,2,2,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,4 }; | |||
| 24087 | static int ldelels[54] = { 1,3,5,1,3,5,1,3,5,1,3,5,-5,-3,-1,1,3,5,-5, | |||
| 24088 | -3,-1,1,3,5,-5,-3,-1,1,3,5,-5,-3,-1,1,3,5,-5,-3,-1,1,3,5,-5,-3,-1, | |||
| 24089 | 1,3,5,-5,-3,-1,1,3,5 }; | |||
| 24090 | static double as[54] = { 7.9332e-42,7.8207e-42,7.7235e-42,4.5815e-42, | |||
| 24091 | 4.4834e-42,4.4059e-42,2.173e-42,2.0824e-42,2.025e-42,7.7222e-43, | |||
| 24092 | 7.0351e-43,6.6815e-43,4.9611e-43,5.2232e-43,5.2979e-43,5.4652e-43, | |||
| 24093 | 5.6827e-43,5.9277e-43,5.733e-43,6.062e-43,6.0862e-43,6.2104e-43, | |||
| 24094 | 6.3809e-43,6.5698e-43,3.9501e-43,4.1599e-43,4.1033e-43,4.1097e-43, | |||
| 24095 | 4.1339e-43,4.153e-43,1.5858e-43,1.5976e-43,1.5478e-43,1.5066e-43, | |||
| 24096 | 1.4554e-43,1.3848e-43,9.9241e-44,1.0109e-43,1.0396e-43,1.0758e-43, | |||
| 24097 | 1.1176e-43,1.1636e-43,1.646e-43,1.647e-43,1.6617e-43,1.6837e-43, | |||
| 24098 | 1.7085e-43,1.7327e-43,1.1797e-43,1.1593e-43,1.1405e-43,1.1174e-43, | |||
| 24099 | 1.0853e-43,1.0401e-43 }; | |||
| 24100 | static double bs[54] = { 6.12e-4,6.35e-4,6.77e-4,.001137,.001201, | |||
| 24101 | .001341,.00229,.002449,.00287,.005426,.005876,.00745,.001,8.83e-4, | |||
| 24102 | 6.09e-4,3.92e-4,2.07e-4,3.7e-5,.001625,.001624,.001305,.001084, | |||
| 24103 | 9.27e-4,8.21e-4,.002978,.003273,.002994,.002954,.003153,.003668, | |||
| 24104 | .005799,.006423,.006733,.00796,.010937,.019179,.001229,9.93e-4, | |||
| 24105 | 7.67e-4,5.43e-4,3.09e-4,5.1e-5,.002456,.0023,.00221,.002193, | |||
| 24106 | .002273,.002506,.004556,.004825,.005454,.006725,.009431,.016672 }; | |||
| 24107 | static double twopic = 1.88365183e11; | |||
| 24108 | static double pi = 3.141592654; | |||
| 24109 | ||||
| 24110 | /* System generated locals */ | |||
| 24111 | int s__1; | |||
| 24112 | double d__1; | |||
| 24113 | ||||
| 24114 | /* Local variables */ | |||
| 24115 | double alfa; | |||
| 24116 | int nnii, ivip; | |||
| 24117 | //int nsol2; | |||
| 24118 | double a, b; | |||
| 24119 | int i__, l, n; | |||
| 24120 | double stoke, stoki, am, pf; | |||
| 24121 | int ll, lp; | |||
| 24122 | double rm; | |||
| 24123 | int nr, ldelel, iv; | |||
| 24124 | //int ldelvi; | |||
| 24125 | double stokip; | |||
| 24126 | int ivi, llp, ivp; | |||
| 24127 | extern double clebsqr_(int *, int *, int *); | |||
| 24128 | extern /* Subroutine */ int profile_(double *, double *); | |||
| 24129 | ||||
| 24130 | ||||
| 24131 | #define eb_ref(a_1,a_2) eb[(a_2)*41 + a_1 - 42] | |||
| 24132 | ||||
| 24133 | ||||
| 24134 | ||||
| 24135 | /* COMMON/APP3/SLIT,DX,NSRI,WNRMAX3,NS,NSRIUP */ | |||
| 24136 | /* STORED VALUES */ | |||
| 24137 | ||||
| 24138 | /* TKS THIS DATA STRUCTURE HAS 55 ENTRIES AND NOT 54!! */ | |||
| 24139 | /* TKS DATA LDELVIS /0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1, */ | |||
| 24140 | /* TKS & 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2, */ | |||
| 24141 | /* TKS & 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2/ */ | |||
| 24142 | /* TKS WE HAVE SSKIPPED THE LAST "2" IN THIS DATA STATEMENT */ | |||
| 24143 | /* Parameter adjustments */ | |||
| 24144 | --rsi; | |||
| 24145 | ||||
| 24146 | /* Function Body */ | |||
| 24147 | ||||
| 24148 | ||||
| 24149 | ||||
| 24150 | ||||
| 24151 | ||||
| 24152 | ||||
| 24153 | ||||
| 24154 | ||||
| 24155 | nsri = 190; | |||
| 24156 | wnrmax3 = 47.; | |||
| 24157 | nsriup = (nsri << 1) + 1; | |||
| 24158 | dx = wnrmax3 / (double) nsri; | |||
| 24159 | ns = (int) (slit / dx); | |||
| 24160 | ||||
| 24161 | for (i__ = 1; i__ <= 401; ++i__) { | |||
| 24162 | /* L300: */ | |||
| 24163 | rsibb[i__ - 1] = 0.; | |||
| 24164 | } | |||
| 24165 | alfa = 1. / (*temp * .69519); | |||
| 24166 | rm = 2.32498211e-23; | |||
| 24167 | /* RM - REDUCED MASS FOR N2-N2 */ | |||
| 24168 | ||||
| 24169 | d__1 = rm * 1.380662e-16 * *temp * 2. * pi / 4.3906208382975998e-53; | |||
| 24170 | pf = pow(d__1, c_b186); | |||
| 24171 | /* SCALE DOWNWARD BY 1.D60 */ | |||
| 24172 | pf *= 1e-60; | |||
| 24173 | ||||
| 24174 | nr = 0; | |||
| 24175 | L555: | |||
| 24176 | ++nr; | |||
| 24177 | //ldelvi = ldelvis[nr - 1]; | |||
| 24178 | ivi = ivis[nr - 1]; | |||
| 24179 | ivip = ivips[nr - 1]; | |||
| 24180 | ldelel = ldelels[nr - 1]; | |||
| 24181 | a = as[nr - 1]; | |||
| 24182 | b = bs[nr - 1]; | |||
| 24183 | /* WRITE (6,334) LDELVI,IVI,IVIP, LDELEL,A,B */ | |||
| 24184 | /* L334: */ | |||
| 24185 | /* LDELVI=DELTA(V)=V'-V */ | |||
| 24186 | /* IVI = V */ | |||
| 24187 | /* LDELEL = DELTA(L) = L'-L */ | |||
| 24188 | ||||
| 24189 | iv = ivi + 1; | |||
| 24190 | ivp = ivip + 1; | |||
| 24191 | nnii = niv[iv - 1]; | |||
| 24192 | s__1 = nnii; | |||
| 24193 | for (l = 1; l <= s__1; ++l) { | |||
| 24194 | am = a * exp(-b * (double) (l * (l + 1))); | |||
| 24195 | lp = l + ldelel; | |||
| 24196 | ll = l - 1; | |||
| 24197 | llp = lp - 1; | |||
| 24198 | if (lp > niv[ivp - 1] || lp < 1) { | |||
| 24199 | goto L20; | |||
| 24200 | } | |||
| 24201 | if (eb_ref(lp, ivp) == 0.) { | |||
| 24202 | goto L20; | |||
| 24203 | } | |||
| 24204 | if (eb_ref(l, iv) == 0.) { | |||
| 24205 | goto L20; | |||
| 24206 | } | |||
| 24207 | ||||
| 24208 | stoke = eb_ref(lp, ivp) - eb_ref(l, iv); | |||
| 24209 | stoki = am * exp(-alfa * eb_ref(l, iv)) / pf * (double) ((ll << 1) | |||
| 24210 | + 1) * clebsqr_(&ll, &cs__5, &llp); | |||
| 24211 | profile_(&stoke, &stoki); | |||
| 24212 | if (stoki > 0.) { | |||
| 24213 | ++nlines; | |||
| 24214 | } | |||
| 24215 | stokip = am * exp(-alfa * eb_ref(lp, ivp)) / pf * (double) ((llp | |||
| 24216 | << 1) + 1) * clebsqr_(&llp, &cs__5, &ll); | |||
| 24217 | d__1 = -stoke; | |||
| 24218 | profile_(&d__1, &stokip); | |||
| 24219 | if (stokip > 0.) { | |||
| 24220 | ++nlines; | |||
| 24221 | } | |||
| 24222 | L20: | |||
| 24223 | ; | |||
| 24224 | } | |||
| 24225 | if (nr == 54) { | |||
| 24226 | goto L56; | |||
| 24227 | } | |||
| 24228 | ||||
| 24229 | goto L555; | |||
| 24230 | L56: | |||
| 24231 | /* 54 ENTRIES FOR (5440)=(5404) IN TABLE 6 */ | |||
| 24232 | ||||
| 24233 | s__1 = nsriup; | |||
| 24234 | for (n = 1; n <= s__1; ++n) { | |||
| 24235 | /* L90: */ | |||
| 24236 | rsibb[n - 1] = rsibb[n - 1] / twopic / slit; | |||
| 24237 | } | |||
| 24238 | ||||
| 24239 | *nsol = nsri + 1; | |||
| 24240 | //nsol2 = *nsol + 1; | |||
| 24241 | ||||
| 24242 | s__1 = *nsol; | |||
| 24243 | for (i__ = 1; i__ <= s__1; ++i__) { | |||
| 24244 | /* L22: */ | |||
| 24245 | rsi[i__] = rsibb[*nsol - 1 + i__ - 1]; | |||
| 24246 | } | |||
| 24247 | ||||
| 24248 | /* PRINT 999, (RSI(I),I=1,NSOL) */ | |||
| 24249 | /* L999: */ | |||
| 24250 | ||||
| 24251 | return 0; | |||
| 24252 | } /* bound54_ */ | |||
| 24253 | ||||
| 24254 | #undef slit | |||
| 24255 | #undef dx | |||
| 24256 | #undef wnrmax3 | |||
| 24257 | #undef nsri | |||
| 24258 | #undef ns | |||
| 24259 | #undef nsriup | |||
| 24260 | #undef eb | |||
| 24261 | #undef niv | |||
| 24262 | #undef nlines | |||
| 24263 | #undef rsibb | |||
| 24264 | ||||
| 24265 | ||||
| 24266 | #undef eb_ref | |||
| 24267 | ||||
| 24268 | ||||
| 24269 | double clebsqr_0_(int n__, int *l, int *lambda, int *lp) | |||
| 24270 | { | |||
| 24271 | /* System generated locals */ | |||
| 24272 | int s__1, s__2; | |||
| 24273 | double ret_val, d__1; | |||
| 24274 | ||||
| 24275 | /* Local variables */ | |||
| 24276 | extern double fctl_(int *); | |||
| 24277 | double f; | |||
| 24278 | int i__; | |||
| 24279 | double p; | |||
| 24280 | int i0, i1; | |||
| 24281 | double fc; | |||
| 24282 | ||||
| 24283 | /* SQUARE OF CLEBSCH-GORDAN COEFFICIENT (L,LAMBDA,0,0;LP,0) */ | |||
| 24284 | /* FOR INTEGER ARGUMENTS ONLY */ | |||
| 24285 | /* NOTE THAT LAMBDA SHOULD BE SMALL, MAYBE @10 OR SO. */ | |||
| 24286 | ||||
| 24287 | ||||
| 24288 | switch(n__) { | |||
| 24289 | case 1: goto L_threej2; | |||
| 24290 | } | |||
| 24291 | ||||
| 24292 | fc = (double) ((*lp << 1) + 1); | |||
| 24293 | goto L2; | |||
| 24294 | ||||
| 24295 | ||||
| 24296 | L_threej2: | |||
| 24297 | /* THIS ENTRY RETURNS THE SQUARED 3-J SYMBOL L LAMBDA LP */ | |||
| 24298 | /* 0 0 0 */ | |||
| 24299 | /* INSTEAD OF THE CLEBSCH-GORDAN COEFFICIENT */ | |||
| 24300 | /* (LIMITATION TO INTEGER ARGUMENTS ONLY) */ | |||
| 24301 | ||||
| 24302 | /* NOTE THAT THE THREE-J SYMBOLS ARE COMPLETELY SYMMETRIC IN THE */ | |||
| 24303 | /* ARGUMENTS. IT WOULD BE ADVANTAGEOUS TO REORDER THE INPUT ARGUMENT */ | |||
| 24304 | /* LIST SO THAT LAMBDA BECOMES THE SMALLEST OF THE 3 ARGUMENTS. */ | |||
| 24305 | fc = 1.; | |||
| 24306 | L2: | |||
| 24307 | ret_val = 0.; | |||
| 24308 | if (*l + *lambda < *lp || *lambda + *lp < *l || *l + *lp < *lambda) { | |||
| 24309 | return ret_val; | |||
| 24310 | } | |||
| 24311 | if ((*l + *lp + *lambda) % 2 != 0) { | |||
| 24312 | return ret_val; | |||
| 24313 | } | |||
| 24314 | if (*l < 0 || *lp < 0 || *lambda < 0) { | |||
| 24315 | return ret_val; | |||
| 24316 | } | |||
| 24317 | f = 1. / (double) (*l + *lp + 1 - *lambda); | |||
| 24318 | if (*lambda == 0) { | |||
| 24319 | goto L22; | |||
| 24320 | } | |||
| 24321 | i1 = (*l + *lp + *lambda) / 2; | |||
| 24322 | i0 = (*l + *lp - *lambda) / 2 + 1; | |||
| 24323 | s__1 = i1; | |||
| 24324 | for (i__ = i0; i__ <= s__1; ++i__) { | |||
| 24325 | /* L20: */ | |||
| 24326 | f = f * (double) i__ / (double) (((i__ << 1) + 1) << 1); | |||
| 24327 | } | |||
| 24328 | L22: | |||
| 24329 | s__1 = *lambda + *l - *lp; | |||
| 24330 | s__2 = *lambda + *lp - *l; | |||
| 24331 | p = fc * f * fctl_(&s__1) * fctl_(&s__2); | |||
| 24332 | s__1 = (*lambda + *l - *lp) / 2; | |||
| 24333 | s__2 = (*lambda + *lp - *l) / 2; | |||
| 24334 | /* Computing 2nd power */ | |||
| 24335 | d__1 = fctl_(&s__1) * fctl_(&s__2); | |||
| 24336 | ret_val = p / (d__1 * d__1); | |||
| 24337 | return ret_val; | |||
| 24338 | } /* clebsqr_ */ | |||
| 24339 | ||||
| 24340 | double clebsqr_(int *l, int *lambda, int *lp) | |||
| 24341 | { | |||
| 24342 | return clebsqr_0_(0, l, lambda, lp); | |||
| 24343 | } | |||
| 24344 | ||||
| 24345 | double fctl_(int *n) | |||
| 24346 | { | |||
| 24347 | /* System generated locals */ | |||
| 24348 | int s__1; | |||
| 24349 | double ret_val, d__1; | |||
| 24350 | ||||
| 24351 | /* Local variables */ | |||
| 24352 | int i__, j; | |||
| 24353 | double z__; | |||
| 24354 | ||||
| 24355 | ||||
| 24356 | ||||
| 24357 | ret_val = 1.; | |||
| 24358 | if (*n <= 1) { | |||
| 24359 | return ret_val; | |||
| 24360 | } | |||
| 24361 | if (*n > 15) { | |||
| 24362 | goto L20; | |||
| 24363 | } | |||
| 24364 | j = 1; | |||
| 24365 | s__1 = *n; | |||
| 24366 | for (i__ = 2; i__ <= s__1; ++i__) { | |||
| 24367 | /* L10: */ | |||
| 24368 | j *= i__; | |||
| 24369 | } | |||
| 24370 | ret_val = (double) j; | |||
| 24371 | return ret_val; | |||
| 24372 | L20: | |||
| 24373 | z__ = (double) (*n + 1); | |||
| 24374 | d__1 = z__ - .5; | |||
| 24375 | ret_val = exp(-z__) * pow(z__, d__1) * ((((-2.294720936e-4 / z__ - | |||
| 24376 | .00268132716) / z__ + .003472222222) / z__ + .08333333333) / z__ | |||
| 24377 | + 1.) * 2.506628274631; | |||
| 24378 | return ret_val; | |||
| 24379 | } /* fctl_ */ | |||
| 24380 | #define ik1k0 (k1k0_1k1k0_.ik1k0) | |||
| 24381 | ||||
| 24382 | double bgama_(double *fnu, double *t1, double *t2, double | |||
| 24383 | *eps, double *t3, double *t4, double *temp) | |||
| 24384 | { | |||
| 24385 | /* Initialized data */ | |||
| 24386 | ||||
| 24387 | static double pi = 3.1415926535898; | |||
| 24388 | static double clight = 29979245800.; | |||
| 24389 | static double hbar = 1.0545887e-27; | |||
| 24390 | static double boltz = 1.380662e-16; | |||
| 24391 | ||||
| 24392 | /* System generated locals */ | |||
| 24393 | double ret_val, d__1, d__2, d__3, d__4; | |||
| 24394 | ||||
| 24395 | /* Local variables */ | |||
| 24396 | double omega, z__, k0, t0, bgambc, zp, xk1; | |||
| 24397 | ||||
| 24398 | /* SPECTRAL FUNCTION "EBC", FOR REFERENCE: */ | |||
| 24399 | /* SEE "PHENOMENA INDUCED BY INTERMOLECULAR INTERACTIONS", */ | |||
| 24400 | /* ED. G. BIRNBAUM; J. BORYSOW AND L. FROMMHOLD, P.67, (1985) */ | |||
| 24401 | /* ============================================ */ | |||
| 24402 | ||||
| 24403 | ||||
| 24404 | /* IF IK1K0=1 ONLY B-C; EBC OTHERWISE */ | |||
| 24405 | ||||
| 24406 | omega = 2. * pi * clight * *fnu; | |||
| 24407 | t0 = hbar / (boltz * 2. * *temp); | |||
| 24408 | /* Computing 2nd power */ | |||
| 24409 | d__1 = omega * *t1; | |||
| 24410 | z__ = sqrt((d__1 * d__1 + 1.) * (*t2 * *t2 + t0 * t0)) / *t1; | |||
| 24411 | if (z__ - 2. <= 0.) { | |||
| 24412 | goto L10; | |||
| 24413 | } else { | |||
| 24414 | goto L12; | |||
| 24415 | } | |||
| 24416 | L10: | |||
| 24417 | /* Computing 2nd power */ | |||
| 24418 | d__2 = z__ / 3.75; | |||
| 24419 | d__1 = d__2 * d__2; | |||
| 24420 | /* Computing 2nd power */ | |||
| 24421 | d__4 = z__ / 2.; | |||
| 24422 | d__3 = d__4 * d__4; | |||
| 24423 | xk1 = z__ * z__ * log(z__ / 2.) * ((((((3.2411e-4 * d__1 + .00301532) * | |||
| 24424 | d__1 + .02658733) * d__1 + .15084934) * d__1 + .51498869) * d__1 | |||
| 24425 | + .87890594) * d__1 + .5) + ((((((-4.686e-5 * d__3 - .00110404) * | |||
| 24426 | d__3 - .01919402) * d__3 - .18156897) * d__3 - .67278579) * d__3 | |||
| 24427 | + .15443144) * d__3 + 1.); | |||
| 24428 | goto L20; | |||
| 24429 | L12: | |||
| 24430 | d__1 = 2. / z__; | |||
| 24431 | xk1 = sqrt(z__) * exp(-z__) * ((((((-6.8245e-4 * d__1 + .00325614) * d__1 | |||
| 24432 | - .00780353) * d__1 + .01504268) * d__1 - .0365562) * d__1 + | |||
| 24433 | .23498619) * d__1 + 1.25331414); | |||
| 24434 | L20: | |||
| 24435 | /* Computing 2nd power */ | |||
| 24436 | d__1 = *t1 * omega; | |||
| 24437 | bgambc = *t1 / pi * exp(*t2 / *t1 + t0 * omega) * xk1 / (d__1 * d__1 + 1.) | |||
| 24438 | ; | |||
| 24439 | if (ik1k0 == 1) { | |||
| 24440 | goto L55; | |||
| 24441 | } | |||
| 24442 | /* Computing 2nd power */ | |||
| 24443 | d__1 = omega * *t4; | |||
| 24444 | zp = sqrt((d__1 * d__1 + 1.) * (*t3 * *t3 + t0 * t0)) / *t4; | |||
| 24445 | if (zp - 2. <= 0.) { | |||
| 24446 | goto L22; | |||
| 24447 | } else { | |||
| 24448 | goto L24; | |||
| 24449 | } | |||
| 24450 | L22: | |||
| 24451 | /* Computing 2nd power */ | |||
| 24452 | d__2 = zp / 3.75; | |||
| 24453 | d__1 = d__2 * d__2; | |||
| 24454 | /* Computing 2nd power */ | |||
| 24455 | d__4 = zp / 2.; | |||
| 24456 | d__3 = d__4 * d__4; | |||
| 24457 | k0 = -log(zp / 2.) * ((((((.0045813 * d__1 + .0360768) * d__1 + .2659732) | |||
| 24458 | * d__1 + 1.2067492) * d__1 + 3.0899424) * d__1 + 3.5156229) * | |||
| 24459 | d__1 + 1.) + ((((((7.4e-6 * d__3 + 1.075e-4) * d__3 + .00262698) * | |||
| 24460 | d__3 + .0348859) * d__3 + .23069756) * d__3 + .4227842) * d__3 - | |||
| 24461 | .57721566); | |||
| 24462 | goto L30; | |||
| 24463 | L24: | |||
| 24464 | d__1 = 2. / zp; | |||
| 24465 | k0 = exp(-zp) * ((((((5.3208e-4 * d__1 - .0025154) * d__1 + .00587872) * | |||
| 24466 | d__1 - .01062446) * d__1 + .02189568) * d__1 - .07832358) * d__1 | |||
| 24467 | + 1.25331414) / sqrt(zp); | |||
| 24468 | L30: | |||
| 24469 | ret_val = (bgambc + *eps * (*t3 / pi) * exp(*t3 / *t4 + t0 * omega) * k0) | |||
| 24470 | / (*eps + 1.); | |||
| 24471 | goto L66; | |||
| 24472 | L55: | |||
| 24473 | ret_val = bgambc; | |||
| 24474 | L66: | |||
| 24475 | return ret_val; | |||
| 24476 | } /* bgama_ */ | |||
| 24477 | ||||
| 24478 | #undef ik1k0 | |||
| 24479 | ||||
| 24480 | ||||
| 24481 | /* Subroutine */ int spline_0_(int n__, int *l, int *m, int *k, | |||
| 24482 | double *eps, double *x, double *y, double *t, | |||
| 24483 | double *ss, double *si, int *nr, double *s2) | |||
| 24484 | { | |||
| 24485 | /* System generated locals */ | |||
| 24486 | int s__1, s__2; | |||
| 24487 | double d__1, d__2; | |||
| 24488 | ||||
| 24489 | /* Local variables */ | |||
| 24490 | double epsi, prod, h__; | |||
| 24491 | int i__, j, n; | |||
| 24492 | double w, omega; | |||
| 24493 | int n1; | |||
| 24494 | double s3; | |||
| 24495 | int ic; | |||
| 24496 | double sm, delsqs, ht1, ht2, ss2, yp1, eta, ypn; | |||
| 24497 | ||||
| 24498 | ||||
| 24499 | ||||
| 24500 | /* SPLINE INTERPOLATION AND QUADRATURE, THIRD ORDER AFTER GREVILLE. */ | |||
| 24501 | /* INPUT ARGUMENTS L...Y, OUTPUT SS...NR. */ | |||
| 24502 | /* L DATA POINTS X(1), Y(1) ... X(L),Y(L) */ | |||
| 24503 | /* EPS=ERROR CRITERION, TYPICALLY EPS=1.D-5 FOR 5 DECI. PLACES ACCURA */ | |||
| 24504 | /* M ARGUMENTS T(1)..T(M) FOR WHICH FUNCTION VALUES SS(1)..SS(M), FOR */ | |||
| 24505 | /* K=0; OR FIRST OR SECOND DERIVATIVE FOR K=1 OR -1, RESPECTIVELY. */ | |||
| 24506 | /* NOTE THAT M HAS TO BE AT LEAST EQUAL TO 1. */ | |||
| 24507 | /* SI=INTEGRAL (OVER WHOLE INTERVAL) FOR K=2 ONLY. */ | |||
| 24508 | /* FOR 'NATURAL' SPLINE FUNCTIONS, S2(1)=S2(L)=0. MUST BE INPUT*NOTE* */ | |||
| 24509 | /* N0 INDICATES THE NUMBER OF OUT-OF-RANGE CALLS. X(1)<T(I)<X(L) */ | |||
| 24510 | /* EXTRAPOLATE WITH CAUTION. (ASSUMPTION D2Y/DX2 = 0.) */ | |||
| 24511 | /* S2(I) IS THE 2ND DERIVATIVE AT X=X(I) AND IS COMPUTED INTERNALLY. */ | |||
| 24512 | /* DIMENSION X(L),Y(L),T(M),SS(M),S2(L) */ | |||
| 24513 | ||||
| 24514 | /* Parameter adjustments */ | |||
| 24515 | --x; | |||
| 24516 | --y; | |||
| 24517 | --t; | |||
| 24518 | --ss; | |||
| 24519 | --s2; | |||
| 24520 | ||||
| 24521 | /* Function Body */ | |||
| 24522 | switch(n__) { | |||
| 24523 | case 1: goto L_ixpolat; | |||
| 24524 | } | |||
| 24525 | ||||
| 24526 | n = *l; | |||
| 24527 | n1 = n - 1; | |||
| 24528 | *nr = 0; | |||
| 24529 | /* L4: */ | |||
| 24530 | s__1 = n1; | |||
| 24531 | for (i__ = 2; i__ <= s__1; ++i__) { | |||
| 24532 | /* L52: */ | |||
| 24533 | s__2 = i__ - 1; | |||
| 24534 | s2[i__] = 3. * ((y[i__ + 1] - y[i__]) / (x[i__ + 1] - x[i__]) - (y[ | |||
| 24535 | s__2 + 1] - y[s__2]) / (x[s__2 + 1] - x[s__2])) / (x[i__ + 1] | |||
| 24536 | - x[i__ - 1]) / 1.5; | |||
| 24537 | } | |||
| 24538 | omega = 1.0717968; | |||
| 24539 | ic = 0; | |||
| 24540 | /* 'NATURAL' SPLINE FUNCTIONS OF THIRD ORDER. */ | |||
| 24541 | s2[1] = 0.; | |||
| 24542 | s2[n] = 0.; | |||
| 24543 | L5: | |||
| 24544 | eta = 0.; | |||
| 24545 | ++ic; | |||
| 24546 | sm = abs(s2[1])((s2[1]) >= 0 ? (s2[1]) : -(s2[1])); | |||
| 24547 | s__2 = n; | |||
| 24548 | for (i__ = 2; i__ <= s__2; ++i__) { | |||
| 24549 | if ((d__1 = s2[i__], abs(d__1)((d__1) >= 0 ? (d__1) : -(d__1))) > sm) { | |||
| 24550 | sm = (d__2 = s2[i__], abs(d__2)((d__2) >= 0 ? (d__2) : -(d__2))); | |||
| 24551 | } | |||
| 24552 | /* L25: */ | |||
| 24553 | } | |||
| 24554 | epsi = *eps * sm; | |||
| 24555 | /* L6: */ | |||
| 24556 | s__2 = n1; | |||
| 24557 | for (i__ = 2; i__ <= s__2; ++i__) { | |||
| 24558 | /* L7: */ | |||
| 24559 | s__1 = i__ - 1; | |||
| 24560 | w = (3. * ((y[i__ + 1] - y[i__]) / (x[i__ + 1] - x[i__]) - (y[s__1 + | |||
| 24561 | 1] - y[s__1]) / (x[s__1 + 1] - x[s__1])) / (x[i__ + 1] - x[ | |||
| 24562 | i__ - 1]) - (x[i__] - x[i__ - 1]) * .5 / (x[i__ + 1] - x[i__ | |||
| 24563 | - 1]) * s2[i__ - 1] - (.5 - (x[i__] - x[i__ - 1]) * .5 / (x[ | |||
| 24564 | i__ + 1] - x[i__ - 1])) * s2[i__ + 1] - s2[i__]) * omega; | |||
| 24565 | /* L8: */ | |||
| 24566 | if (abs(w)((w) >= 0 ? (w) : -(w)) - eta <= 0.) { | |||
| 24567 | goto L10; | |||
| 24568 | } else { | |||
| 24569 | goto L9; | |||
| 24570 | } | |||
| 24571 | L9: | |||
| 24572 | eta = abs(w)((w) >= 0 ? (w) : -(w)); | |||
| 24573 | L10: | |||
| 24574 | s2[i__] += w; | |||
| 24575 | } | |||
| 24576 | /* L13: */ | |||
| 24577 | if (eta - epsi >= 0.) { | |||
| 24578 | goto L5; | |||
| 24579 | } else { | |||
| 24580 | goto L14; | |||
| 24581 | } | |||
| 24582 | /* ENTRY IXPOLAT */ | |||
| 24583 | ||||
| 24584 | L_ixpolat: | |||
| 24585 | /* THIS ENTRY USEFUL WHEN ITERATION PREVIOUSLY COMPLETED */ | |||
| 24586 | ||||
| 24587 | n = *l; | |||
| 24588 | n1 = n - 1; | |||
| 24589 | *nr = 0; | |||
| 24590 | ic = -1; | |||
| 24591 | L14: | |||
| 24592 | if (*k - 2 != 0) { | |||
| 24593 | goto L15; | |||
| 24594 | } else { | |||
| 24595 | goto L20; | |||
| 24596 | } | |||
| 24597 | L15: | |||
| 24598 | s__2 = *m; | |||
| 24599 | for (j = 1; j <= s__2; ++j) { | |||
| 24600 | /* L16: */ | |||
| 24601 | i__ = 1; | |||
| 24602 | /* L54: */ | |||
| 24603 | if ((d__1 = t[j] - x[1]) < 0.) { | |||
| 24604 | goto L58; | |||
| 24605 | } else if (d__1 == 0) { | |||
| 24606 | goto L17; | |||
| 24607 | } else { | |||
| 24608 | goto L55; | |||
| 24609 | } | |||
| 24610 | L55: | |||
| 24611 | if ((d__1 = t[j] - x[n]) < 0.) { | |||
| 24612 | goto L57; | |||
| 24613 | } else if (d__1 == 0) { | |||
| 24614 | goto L59; | |||
| 24615 | } else { | |||
| 24616 | goto L158; | |||
| 24617 | } | |||
| 24618 | L56: | |||
| 24619 | if ((d__1 = t[j] - x[i__]) < 0.) { | |||
| 24620 | goto L60; | |||
| 24621 | } else if (d__1 == 0) { | |||
| 24622 | goto L17; | |||
| 24623 | } else { | |||
| 24624 | goto L57; | |||
| 24625 | } | |||
| 24626 | L57: | |||
| 24627 | ++i__; | |||
| 24628 | goto L56; | |||
| 24629 | ||||
| 24630 | L58: | |||
| 24631 | ++(*nr); | |||
| 24632 | ht1 = t[j] - x[1]; | |||
| 24633 | //ht2 = t[j] - x[2]; | |||
| 24634 | yp1 = (y[cs__1 + 1] - y[cs__1]) / (x[cs__1 + 1] - x[cs__1]) + (x[1] - | |||
| 24635 | x[2]) * (s2[1] * 2. + s2[2]) / 6.; | |||
| 24636 | if (*k < 0) { | |||
| 24637 | goto L72; | |||
| 24638 | } else if (*k == 0) { | |||
| 24639 | goto L70; | |||
| 24640 | } else { | |||
| 24641 | goto L71; | |||
| 24642 | } | |||
| 24643 | L71: | |||
| 24644 | ss[j] = yp1 + ht1 * s2[1]; | |||
| 24645 | goto L61; | |||
| 24646 | L70: | |||
| 24647 | ss[j] = y[1] + yp1 * ht1 + s2[1] * ht1 * ht1 / 2.; | |||
| 24648 | goto L61; | |||
| 24649 | L72: | |||
| 24650 | ss[j] = s2[i__]; | |||
| 24651 | goto L61; | |||
| 24652 | L158: | |||
| 24653 | ht2 = t[j] - x[n]; | |||
| 24654 | //ht1 = t[j] - x[n1]; | |||
| 24655 | ++(*nr); | |||
| 24656 | ypn = (y[n1 + 1] - y[n1]) / (x[n1 + 1] - x[n1]) + (x[n] - x[n1]) * ( | |||
| 24657 | s2[n1] + s2[n] * 2.) / 6.; | |||
| 24658 | if (*k < 0) { | |||
| 24659 | goto L82; | |||
| 24660 | } else if (*k == 0) { | |||
| 24661 | goto L80; | |||
| 24662 | } else { | |||
| 24663 | goto L81; | |||
| 24664 | } | |||
| 24665 | L81: | |||
| 24666 | ss[j] = ypn + ht2 * s2[n]; | |||
| 24667 | goto L61; | |||
| 24668 | L80: | |||
| 24669 | ss[j] = y[n] + ypn * ht2 + s2[n] * ht2 * ht2 / 2.; | |||
| 24670 | goto L61; | |||
| 24671 | L82: | |||
| 24672 | ss[j] = s2[n]; | |||
| 24673 | goto L61; | |||
| 24674 | ||||
| 24675 | L59: | |||
| 24676 | i__ = n; | |||
| 24677 | L60: | |||
| 24678 | --i__; | |||
| 24679 | L17: | |||
| 24680 | ht1 = t[j] - x[i__]; | |||
| 24681 | ht2 = t[j] - x[i__ + 1]; | |||
| 24682 | prod = ht1 * ht2; | |||
| 24683 | s3 = (s2[i__ + 1] - s2[i__]) / (x[i__ + 1] - x[i__]); | |||
| 24684 | ss2 = s2[i__] + ht1 * s3; | |||
| 24685 | delsqs = (s2[i__] + s2[i__ + 1] + ss2) / 6.; | |||
| 24686 | ||||
| 24687 | if (*k < 0) { | |||
| 24688 | goto L43; | |||
| 24689 | } else if (*k == 0) { | |||
| 24690 | goto L41; | |||
| 24691 | } else { | |||
| 24692 | goto L42; | |||
| 24693 | } | |||
| 24694 | L41: | |||
| 24695 | ss[j] = y[i__] + ht1 * ((y[i__ + 1] - y[i__]) / (x[i__ + 1] - x[i__])) | |||
| 24696 | + prod * delsqs; | |||
| 24697 | goto L61; | |||
| 24698 | L42: | |||
| 24699 | ss[j] = (y[i__ + 1] - y[i__]) / (x[i__ + 1] - x[i__]) + (ht1 + ht2) * | |||
| 24700 | delsqs + prod * s3 / 6.; | |||
| 24701 | goto L61; | |||
| 24702 | L43: | |||
| 24703 | ss[j] = ss2; | |||
| 24704 | L61: | |||
| 24705 | ; | |||
| 24706 | } | |||
| 24707 | L20: | |||
| 24708 | *si = 0.; | |||
| 24709 | ||||
| 24710 | s__2 = n1; | |||
| 24711 | for (i__ = 1; i__ <= s__2; ++i__) { | |||
| 24712 | h__ = x[i__ + 1] - x[i__]; | |||
| 24713 | /* L62: */ | |||
| 24714 | /* Computing 3rd power */ | |||
| 24715 | d__1 = h__; | |||
| 24716 | *si = *si + h__ * .5 * (y[i__] + y[i__ + 1]) - d__1 * (d__1 * d__1) * | |||
| 24717 | (s2[i__] + s2[i__ + 1]) / 24.; | |||
| 24718 | } | |||
| 24719 | ||||
| 24720 | if (*k == 2) { | |||
| 24721 | *nr = ic; | |||
| 24722 | } | |||
| 24723 | ||||
| 24724 | return 0; | |||
| 24725 | } /* spline_ */ | |||
| 24726 | ||||
| 24727 | /* Subroutine */ int spline_(int *l, int *m, int *k, | |||
| 24728 | double *eps, double *x, double *y, double *t, | |||
| 24729 | double *ss, double *si, int *nr, double *s2) | |||
| 24730 | { | |||
| 24731 | return spline_0_(0, l, m, k, eps, x, y, t, ss, si, nr, s2); | |||
| 24732 | } | |||
| 24733 | ||||
| 24734 | /* Subroutine */ int ixpolat_(int *l, int *m, int *k, | |||
| 24735 | double *eps, double *x, double *y, double *t, | |||
| 24736 | double *ss, double *si, int *nr, double *s2) | |||
| 24737 | { | |||
| 24738 | return spline_0_(1, l, m, k, eps, x, y, t, ss, si, nr, s2); | |||
| 24739 | } | |||
| 24740 | ||||
| 24741 | ||||
| 24742 | // ---------------------- end of Borysow N2N2 F77 code ------------------------- | |||
| 24743 | ||||
| 24744 | ||||
| 24745 | // ---------------------- begin of monortm CKD F77 code ------------------------- | |||
| 24746 | ||||
| 24747 | ||||
| 24748 | /* Common Block Declarations */ | |||
| 24749 | ||||
| 24750 | struct fh2oa_1_ { | |||
| 24751 | double fh2o[2003]; | |||
| 24752 | }; | |||
| 24753 | ||||
| 24754 | #define fh2oa_1(*(struct fh2oa_1_ *) &fh2oa_) (*(struct fh2oa_1_ *) &fh2oa_) | |||
| 24755 | ||||
| 24756 | struct fh2ob_1_ { | |||
| 24757 | double v1, v2, dv; | |||
| 24758 | int nptfh2o; | |||
| 24759 | }; | |||
| 24760 | struct fh2ob_2_ { | |||
| 24761 | double v1, v2, dv; | |||
| 24762 | int npts; | |||
| 24763 | }; | |||
| 24764 | ||||
| 24765 | #define fh2ob_1(*(struct fh2ob_1_ *) &fh2ob_) (*(struct fh2ob_1_ *) &fh2ob_) | |||
| 24766 | #define fh2ob_2(*(struct fh2ob_2_ *) &fh2ob_) (*(struct fh2ob_2_ *) &fh2ob_) | |||
| 24767 | ||||
| 24768 | struct sh2oa_1_ { | |||
| 24769 | double swv296[2003]; | |||
| 24770 | }; | |||
| 24771 | ||||
| 24772 | #define sh2oa_1(*(struct sh2oa_1_ *) &sh2oa_) (*(struct sh2oa_1_ *) &sh2oa_) | |||
| 24773 | ||||
| 24774 | struct sh2ob_1_ { | |||
| 24775 | double v1, v2, dv; | |||
| 24776 | int nptslfwv; | |||
| 24777 | }; | |||
| 24778 | struct sh2ob_2_ { | |||
| 24779 | double v1, v2, dv; | |||
| 24780 | int npts; | |||
| 24781 | }; | |||
| 24782 | ||||
| 24783 | #define sh2ob_1(*(struct sh2ob_1_ *) &sh2ob_) (*(struct sh2ob_1_ *) &sh2ob_) | |||
| 24784 | #define sh2ob_2(*(struct sh2ob_2_ *) &sh2ob_) (*(struct sh2ob_2_ *) &sh2ob_) | |||
| 24785 | ||||
| 24786 | struct s260a_1_ { | |||
| 24787 | double swv260[2003]; | |||
| 24788 | }; | |||
| 24789 | ||||
| 24790 | #define s260a_1(*(struct s260a_1_ *) &s260a_) (*(struct s260a_1_ *) &s260a_) | |||
| 24791 | ||||
| 24792 | struct s260b_1_ { | |||
| 24793 | double v1___, v2___, dv___; | |||
| 24794 | int nptslfwv___; | |||
| 24795 | }; | |||
| 24796 | struct s260b_2_ { | |||
| 24797 | double v1, v2, dv; | |||
| 24798 | int npts; | |||
| 24799 | }; | |||
| 24800 | ||||
| 24801 | #define s260b_1(*(struct s260b_1_ *) &s260b_) (*(struct s260b_1_ *) &s260b_) | |||
| 24802 | #define s260b_2(*(struct s260b_2_ *) &s260b_) (*(struct s260b_2_ *) &s260b_) | |||
| 24803 | ||||
| 24804 | struct consts_1_ { | |||
| 24805 | double pi, planck, boltz, clight, avogad, alosmt, gascon, radcn1, | |||
| 24806 | radcn2; | |||
| 24807 | }; | |||
| 24808 | ||||
| 24809 | #define consts_1(*(struct consts_1_ *) &consts_) (*(struct consts_1_ *) &consts_) | |||
| 24810 | ||||
| 24811 | /* Initialized data */ | |||
| 24812 | ||||
| 24813 | struct s_fh2oa_ { | |||
| 24814 | double e_1[2003]; | |||
| 24815 | } fh2oa_ = { {.012859, .011715, .011038, .011715, .012859, .015326, | |||
| 24816 | .016999, .018321, .019402, .01957, .019432, .017572, .01676, | |||
| 24817 | .01548, .013984, .012266, .010467, .0094526, .0080485, .0069484, | |||
| 24818 | .0061416, .0050941, .0044836, .0038133, .0034608, .0031487, | |||
| 24819 | .0024555, .0020977, .0017266, .001492, .0012709, 9.8081e-4, | |||
| 24820 | 8.5063e-4, 6.8822e-4, 5.3809e-4, 4.4679e-4, 3.3774e-4, 2.7979e-4, | |||
| 24821 | 2.1047e-4, 1.6511e-4, 1.2993e-4, 9.3033e-5, 7.436e-5, 5.6428e-5, | |||
| 24822 | 4.5442e-5, 3.4575e-5, 2.7903e-5, 2.1374e-5, 1.6075e-5, 1.3022e-5, | |||
| 24823 | 1.0962e-5, 8.5959e-6, 6.9125e-6, 5.3808e-6, 4.3586e-6, 3.6394e-6, | |||
| 24824 | 2.9552e-6, 2.3547e-6, 1.8463e-6, 1.6036e-6, 1.3483e-6, 1.1968e-6, | |||
| 24825 | 1.0333e-6, 8.4484e-7, 6.7195e-7, 5.0947e-7, 4.2343e-7, 3.4453e-7, | |||
| 24826 | 2.783e-7, 2.3063e-7, 1.9951e-7, 1.7087e-7, 1.4393e-7, 1.2575e-7, | |||
| 24827 | 1.075e-7, 8.2325e-8, 5.7524e-8, 4.4482e-8, 3.8106e-8, 3.4315e-8, | |||
| 24828 | 2.9422e-8, 2.5069e-8, 2.2402e-8, 1.9349e-8, 1.6152e-8, 1.2208e-8, | |||
| 24829 | 8.966e-9, 7.1322e-9, 6.1028e-9, 5.2938e-9, 4.535e-9, 3.4977e-9, | |||
| 24830 | 2.9511e-9, 2.4734e-9, 2.0508e-9, 1.8507e-9, 1.6373e-9, 1.5171e-9, | |||
| 24831 | 1.3071e-9, 1.2462e-9, 1.2148e-9, 1.259e-9, 1.3153e-9, 1.3301e-9, | |||
| 24832 | 1.4483e-9, 1.6944e-9, 2.0559e-9, 2.2954e-9, 2.6221e-9, 3.2606e-9, | |||
| 24833 | 4.2392e-9, 5.2171e-9, 6.2553e-9, 8.2548e-9, 9.5842e-9, 1.128e-8, | |||
| 24834 | 1.3628e-8, 1.7635e-8, 2.1576e-8, 2.4835e-8, 3.0014e-8, 3.8485e-8, | |||
| 24835 | 4.744e-8, 5.5202e-8, 7.0897e-8, 9.6578e-8, 1.3976e-7, 1.8391e-7, | |||
| 24836 | 2.3207e-7, 2.996e-7, 4.0408e-7, 5.926e-7, 7.8487e-7, 1.0947e-6, | |||
| 24837 | 1.4676e-6, 1.9325e-6, 2.6587e-6, 3.4534e-6, 4.4376e-6, 5.8061e-6, | |||
| 24838 | 7.0141e-6, 8.4937e-6, 1.0186e-5, 1.2034e-5, 1.3837e-5, 1.6595e-5, | |||
| 24839 | 1.9259e-5, 2.162e-5, 2.3681e-5, 2.7064e-5, 3.251e-5, 3.546e-5, | |||
| 24840 | 3.9109e-5, 4.2891e-5, 4.7757e-5, 5.0981e-5, 5.0527e-5, 4.8618e-5, | |||
| 24841 | 4.4001e-5, 3.7982e-5, 3.2667e-5, 2.7794e-5, 2.491e-5, 2.4375e-5, | |||
| 24842 | 2.7316e-5, 3.2579e-5, 3.5499e-5, 3.801e-5, 4.1353e-5, 4.3323e-5, | |||
| 24843 | 4.3004e-5, 3.979e-5, 3.7718e-5, 3.636e-5, 3.2386e-5, 2.7409e-5, | |||
| 24844 | 2.3626e-5, 2.0631e-5, 1.8371e-5, 1.5445e-5, 1.2989e-5, 1.1098e-5, | |||
| 24845 | 9.6552e-6, 8.0649e-6, 7.2365e-6, 5.9137e-6, 5.2759e-6, 4.886e-6, | |||
| 24846 | 4.1321e-6, 3.5918e-6, 2.764e-6, 2.4892e-6, 2.1018e-6, 1.7848e-6, | |||
| 24847 | 1.5855e-6, 1.3569e-6, 1.1986e-6, 9.4693e-7, 7.4097e-7, 6.3443e-7, | |||
| 24848 | 4.8131e-7, 4.0942e-7, 3.3316e-7, 2.8488e-7, 2.3461e-7, 1.7397e-7, | |||
| 24849 | 1.4684e-7, 1.0953e-7, 8.5396e-8, 6.9261e-8, 5.4001e-8, 4.543e-8, | |||
| 24850 | 3.2791e-8, 2.5995e-8, 2.0225e-8, 1.571e-8, 1.3027e-8, 1.0229e-8, | |||
| 24851 | 8.5277e-9, 6.5249e-9, 5.0117e-9, 3.9906e-9, 3.2332e-9, 2.7847e-9, | |||
| 24852 | 2.457e-9, 2.3359e-9, 2.0599e-9, 1.8436e-9, 1.6559e-9, 1.491e-9, | |||
| 24853 | 1.2794e-9, 9.8229e-10, 8.0054e-10, 6.0769e-10, 4.5646e-10, | |||
| 24854 | 3.3111e-10, 2.4428e-10, 1.8007e-10, 1.3291e-10, 9.7974e-11, | |||
| 24855 | 7.8271e-11, 6.3833e-11, 5.4425e-11, 4.6471e-11, 4.0209e-11, | |||
| 24856 | 3.5227e-11, 3.1212e-11, 2.884e-11, 2.7762e-11, 2.7935e-11, | |||
| 24857 | 3.2012e-11, 3.9525e-11, 5.0303e-11, 6.8027e-11, 9.3954e-11, | |||
| 24858 | 1.2986e-10, 1.8478e-10, 2.5331e-10, 3.4827e-10, 4.6968e-10, | |||
| 24859 | 6.238e-10, 7.9106e-10, 1.0026e-9, 1.2102e-9, 1.4146e-9, 1.6154e-9, | |||
| 24860 | 1.751e-9, 1.8575e-9, 1.8742e-9, 1.87e-9, 1.8582e-9, 1.9657e-9, | |||
| 24861 | 2.1204e-9, 2.0381e-9, 2.0122e-9, 2.0436e-9, 2.1213e-9, 2.0742e-9, | |||
| 24862 | 1.987e-9, 2.0465e-9, 2.1556e-9, 2.2222e-9, 2.1977e-9, 2.1047e-9, | |||
| 24863 | 1.9334e-9, 1.7357e-9, 1.5754e-9, 1.4398e-9, 1.4018e-9, 1.5459e-9, | |||
| 24864 | 1.7576e-9, 2.1645e-9, 2.948e-9, 4.4439e-9, 5.8341e-9, 8.0757e-9, | |||
| 24865 | 1.1658e-8, 1.6793e-8, 2.2694e-8, 2.9468e-8, 3.9278e-8, 5.2145e-8, | |||
| 24866 | 6.4378e-8, 7.7947e-8, 8.5321e-8, 9.7848e-8, 1.0999e-7, 1.1489e-7, | |||
| 24867 | 1.2082e-7, 1.2822e-7, 1.4053e-7, 1.5238e-7, 1.5454e-7, 1.5018e-7, | |||
| 24868 | 1.4048e-7, 1.2359e-7, 1.0858e-7, 9.3486e-8, 8.1638e-8, 7.769e-8, | |||
| 24869 | 8.4625e-8, 1.0114e-7, 1.143e-7, 1.2263e-7, 1.3084e-7, 1.338e-7, | |||
| 24870 | 1.3573e-7, 1.3441e-7, 1.2962e-7, 1.2638e-7, 1.1934e-7, 1.1371e-7, | |||
| 24871 | 1.0871e-7, 9.8843e-8, 9.1877e-8, 9.105e-8, 9.3213e-8, 9.2929e-8, | |||
| 24872 | 1.0155e-7, 1.1263e-7, 1.237e-7, 1.3636e-7, 1.54e-7, 1.7656e-7, | |||
| 24873 | 2.1329e-7, 2.3045e-7, 2.5811e-7, 2.9261e-7, 3.4259e-7, 4.077e-7, | |||
| 24874 | 4.8771e-7, 5.8081e-7, 7.2895e-7, 8.7482e-7, 1.0795e-6, 1.3384e-6, | |||
| 24875 | 1.7208e-6, 2.0677e-6, 2.5294e-6, 3.1123e-6, 3.79e-6, 4.7752e-6, | |||
| 24876 | 5.6891e-6, 6.6261e-6, 7.6246e-6, 8.773e-6, 9.6672e-6, 1.098e-5, | |||
| 24877 | 1.1287e-5, 1.167e-5, 1.1635e-5, 1.1768e-5, 1.2039e-5, 1.2253e-5, | |||
| 24878 | 1.3294e-5, 1.4005e-5, 1.3854e-5, 1.342e-5, 1.3003e-5, 1.2645e-5, | |||
| 24879 | 1.1715e-5, 1.1258e-5, 1.1516e-5, 1.2494e-5, 1.3655e-5, 1.4931e-5, | |||
| 24880 | 1.4649e-5, 1.3857e-5, 1.312e-5, 1.1791e-5, 1.0637e-5, 8.276e-6, | |||
| 24881 | 6.5821e-6, 5.1959e-6, 4.0158e-6, 3.0131e-6, 2.0462e-6, 1.4853e-6, | |||
| 24882 | 1.0365e-6, 7.3938e-7, 4.9752e-7, 3.4148e-7, 2.4992e-7, 1.8363e-7, | |||
| 24883 | 1.4591e-7, 1.138e-7, 9.0588e-8, 7.3697e-8, 6.0252e-8, 5.1868e-8, | |||
| 24884 | 4.266e-8, 3.6163e-8, 3.2512e-8, 2.9258e-8, 2.4238e-8, 2.1209e-8, | |||
| 24885 | 1.6362e-8, 1.3871e-8, 1.2355e-8, 9.694e-9, 7.7735e-9, 6.2278e-9, | |||
| 24886 | 5.2282e-9, 4.3799e-9, 3.5545e-9, 2.7527e-9, 2.095e-9, 1.6344e-9, | |||
| 24887 | 1.2689e-9, 1.0403e-9, 8.488e-10, 6.3461e-10, 4.7657e-10, | |||
| 24888 | 3.522e-10, 2.7879e-10, 2.3021e-10, 1.6167e-10, 1.1732e-10, | |||
| 24889 | 8.9206e-11, 7.0596e-11, 5.831e-11, 4.4084e-11, 3.1534e-11, | |||
| 24890 | 2.5068e-11, 2.2088e-11, 2.2579e-11, 2.2637e-11, 2.5705e-11, | |||
| 24891 | 3.2415e-11, 4.6116e-11, 6.5346e-11, 9.4842e-11, 1.2809e-10, | |||
| 24892 | 1.8211e-10, 2.4052e-10, 3.027e-10, 3.5531e-10, 4.2402e-10, | |||
| 24893 | 4.673e-10, 4.7942e-10, 4.6813e-10, 4.5997e-10, 4.5788e-10, | |||
| 24894 | 4.0311e-10, 3.7367e-10, 3.3149e-10, 2.9281e-10, 2.5231e-10, | |||
| 24895 | 2.1152e-10, 1.9799e-10, 1.8636e-10, 1.9085e-10, 2.0786e-10, | |||
| 24896 | 2.2464e-10, 2.3785e-10, 2.5684e-10, 2.7499e-10, 2.6962e-10, | |||
| 24897 | 2.6378e-10, 2.6297e-10, 2.6903e-10, 2.7035e-10, 2.5394e-10, | |||
| 24898 | 2.5655e-10, 2.7184e-10, 2.9013e-10, 3.0585e-10, 3.0791e-10, | |||
| 24899 | 3.1667e-10, 3.4343e-10, 3.7365e-10, 4.0269e-10, 4.726e-10, | |||
| 24900 | 5.6584e-10, 6.9791e-10, 8.6569e-10, 1.0393e-9, 1.2067e-9, | |||
| 24901 | 1.5047e-9, 1.8583e-9, 2.2357e-9, 2.6498e-9, 3.2483e-9, 3.9927e-9, | |||
| 24902 | 4.6618e-9, 5.5555e-9, 6.6609e-9, 8.2139e-9, 1.0285e-8, 1.3919e-8, | |||
| 24903 | 1.8786e-8, 2.515e-8, 3.313e-8, 4.5442e-8, 6.337e-8, 9.0628e-8, | |||
| 24904 | 1.2118e-7, 1.5927e-7, 2.1358e-7, 2.7825e-7, 3.7671e-7, 4.4894e-7, | |||
| 24905 | 5.4442e-7, 6.224e-7, 7.3004e-7, 8.3384e-7, 8.7933e-7, 8.808e-7, | |||
| 24906 | 8.6939e-7, 8.6541e-7, 8.2055e-7, 7.7278e-7, 7.5989e-7, 8.6909e-7, | |||
| 24907 | 9.7945e-7, 1.0394e-6, 1.0646e-6, 1.1509e-6, 1.2017e-6, 1.1915e-6, | |||
| 24908 | 1.1259e-6, 1.1549e-6, 1.1938e-6, 1.2356e-6, 1.2404e-6, 1.1716e-6, | |||
| 24909 | 1.1149e-6, 1.0073e-6, 8.9845e-7, 7.6639e-7, 6.1517e-7, 5.0887e-7, | |||
| 24910 | 4.1269e-7, 3.2474e-7, 2.5698e-7, 1.8893e-7, 1.4009e-7, 1.034e-7, | |||
| 24911 | 7.7724e-8, 5.7302e-8, 4.2178e-8, 2.9603e-8, 2.1945e-8, 1.6301e-8, | |||
| 24912 | 1.2806e-8, 1.0048e-8, 7.897e-9, 6.1133e-9, 4.9054e-9, 4.1985e-9, | |||
| 24913 | 3.6944e-9, 3.2586e-9, 2.7362e-9, 2.3647e-9, 2.1249e-9, 1.8172e-9, | |||
| 24914 | 1.6224e-9, 1.5158e-9, 1.2361e-9, 1.0682e-9, 9.2312e-10, 7.922e-10, | |||
| 24915 | 6.8174e-10, 5.6147e-10, 4.8268e-10, 4.1534e-10, 3.3106e-10, | |||
| 24916 | 2.8275e-10, 2.4584e-10, 2.0742e-10, 1.784e-10, 1.4664e-10, | |||
| 24917 | 1.239e-10, 1.0497e-10, 8.5038e-11, 6.7008e-11, 5.6355e-11, | |||
| 24918 | 4.3323e-11, 3.6914e-11, 3.2262e-11, 3.0749e-11, 3.0318e-11, | |||
| 24919 | 2.9447e-11, 2.9918e-11, 3.0668e-11, 3.1315e-11, 3.0329e-11, | |||
| 24920 | 2.8259e-11, 2.6065e-11, 2.3578e-11, 2.0469e-11, 1.6908e-11, | |||
| 24921 | 1.4912e-11, 1.1867e-11, 9.973e-12, 8.1014e-12, 6.7528e-12, | |||
| 24922 | 6.3133e-12, 5.8599e-12, 6.0145e-12, 6.5105e-12, 7.0537e-12, | |||
| 24923 | 7.4973e-12, 7.8519e-12, 8.5039e-12, 9.1995e-12, 1.0694e-11, | |||
| 24924 | 1.1659e-11, 1.2685e-11, 1.3087e-11, 1.3222e-11, 1.2634e-11, | |||
| 24925 | 1.1077e-11, 9.6259e-12, 8.3202e-12, 7.4857e-12, 6.8069e-12, | |||
| 24926 | 6.7496e-12, 7.3116e-12, 8.0171e-12, 8.6394e-12, 9.2659e-12, | |||
| 24927 | 1.0048e-11, 1.0941e-11, 1.2226e-11, 1.3058e-11, 1.5193e-11, | |||
| 24928 | 1.8923e-11, 2.3334e-11, 2.8787e-11, 3.6693e-11, 4.8295e-11, | |||
| 24929 | 6.426e-11, 8.8269e-11, 1.1865e-10, 1.5961e-10, 2.0605e-10, | |||
| 24930 | 2.7349e-10, 3.7193e-10, 4.8216e-10, 6.1966e-10, 7.715e-10, | |||
| 24931 | 1.0195e-9, 1.2859e-9, 1.6535e-9, 2.0316e-9, 2.3913e-9, 3.0114e-9, | |||
| 24932 | 3.7495e-9, 4.6504e-9, 5.9145e-9, 7.684e-9, 1.0304e-8, 1.301e-8, | |||
| 24933 | 1.6441e-8, 2.1475e-8, 2.5892e-8, 2.9788e-8, 3.382e-8, 4.0007e-8, | |||
| 24934 | 4.4888e-8, 4.5765e-8, 4.6131e-8, 4.6239e-8, 4.4849e-8, 4.0729e-8, | |||
| 24935 | 3.6856e-8, 3.6164e-8, 3.7606e-8, 4.1457e-8, 4.375e-8, 5.115e-8, | |||
| 24936 | 5.6054e-8, 6.1586e-8, 6.4521e-8, 6.6494e-8, 6.9024e-8, 6.8893e-8, | |||
| 24937 | 7.0901e-8, 6.976e-8, 7.1485e-8, 7.074e-8, 7.3764e-8, 7.6618e-8, | |||
| 24938 | 8.4182e-8, 9.3838e-8, 1.0761e-7, 1.2851e-7, 1.4748e-7, 1.8407e-7, | |||
| 24939 | 2.2109e-7, 2.6392e-7, 2.9887e-7, 3.4493e-7, 4.0336e-7, 4.3551e-7, | |||
| 24940 | 4.9231e-7, 5.0728e-7, 5.3781e-7, 5.3285e-7, 5.4496e-7, 5.5707e-7, | |||
| 24941 | 5.6944e-7, 6.1123e-7, 6.4317e-7, 6.4581e-7, 6.1999e-7, 6.0191e-7, | |||
| 24942 | 5.7762e-7, 5.7241e-7, 5.7013e-7, 6.016e-7, 6.6905e-7, 7.4095e-7, | |||
| 24943 | 8.2121e-7, 8.0947e-7, 7.6145e-7, 7.2193e-7, 6.3722e-7, 5.4316e-7, | |||
| 24944 | 4.2186e-7, 3.2528e-7, 2.5207e-7, 1.8213e-7, 1.2658e-7, 8.6746e-8, | |||
| 24945 | 6.0216e-8, 4.1122e-8, 2.8899e-8, 2.174e-8, 1.799e-8, 1.5593e-8, | |||
| 24946 | 1.397e-8, 1.2238e-8, 1.0539e-8, 9.2386e-9, 7.8481e-9, 6.8704e-9, | |||
| 24947 | 5.7615e-9, 5.0434e-9, 4.6886e-9, 4.377e-9, 3.9768e-9, 3.5202e-9, | |||
| 24948 | 3.1854e-9, 2.9009e-9, 2.5763e-9, 2.2135e-9, 1.9455e-9, 1.6248e-9, | |||
| 24949 | 1.3368e-9, 1.0842e-9, 8.4254e-10, 6.7414e-10, 5.4667e-10, | |||
| 24950 | 4.5005e-10, 3.4932e-10, 2.6745e-10, 2.2053e-10, 1.8162e-10, | |||
| 24951 | 1.4935e-10, 1.1618e-10, 9.1888e-11, 8.0672e-11, 6.8746e-11, | |||
| 24952 | 6.2668e-11, 5.5715e-11, 4.5074e-11, 3.7669e-11, 3.2082e-11, | |||
| 24953 | 2.8085e-11, 2.4838e-11, 1.9791e-11, 1.6964e-11, 1.3887e-11, | |||
| 24954 | 1.1179e-11, 9.7499e-12, 7.8255e-12, 6.3698e-12, 5.3265e-12, | |||
| 24955 | 4.6588e-12, 4.4498e-12, 3.9984e-12, 3.7513e-12, 3.7176e-12, | |||
| 24956 | 3.9148e-12, 4.2702e-12, 5.009e-12, 6.5801e-12, 8.7787e-12, | |||
| 24957 | 1.2718e-11, 1.8375e-11, 2.5304e-11, 3.5403e-11, 4.8842e-11, | |||
| 24958 | 6.484e-11, 8.0911e-11, 1.0136e-10, 1.2311e-10, 1.4203e-10, | |||
| 24959 | 1.5869e-10, 1.8093e-10, 2.137e-10, 2.5228e-10, 2.8816e-10, | |||
| 24960 | 3.4556e-10, 3.986e-10, 4.435e-10, 4.776e-10, 5.2357e-10, | |||
| 24961 | 6.0827e-10, 6.3635e-10, 6.5886e-10, 6.8753e-10, 7.2349e-10, | |||
| 24962 | 7.2789e-10, 6.8232e-10, 6.6081e-10, 6.4232e-10, 6.3485e-10, | |||
| 24963 | 6.4311e-10, 7.2235e-10, 7.7263e-10, 8.1668e-10, 9.0324e-10, | |||
| 24964 | 9.7643e-10, 1.0535e-9, 1.0195e-9, 1.0194e-9, 1.0156e-9, | |||
| 24965 | 9.6792e-10, 9.2725e-10, 8.7347e-10, 8.4484e-10, 8.2647e-10, | |||
| 24966 | 8.4363e-10, 9.1261e-10, 1.0051e-9, 1.1511e-9, 1.4037e-9, | |||
| 24967 | 1.8066e-9, 2.4483e-9, 3.2739e-9, 4.3194e-9, 5.6902e-9, 7.7924e-9, | |||
| 24968 | 9.7376e-9, 1.2055e-8, 1.4303e-8, 1.6956e-8, 1.9542e-8, 2.2233e-8, | |||
| 24969 | 2.5186e-8, 2.7777e-8, 2.8943e-8, 2.8873e-8, 2.9417e-8, 2.7954e-8, | |||
| 24970 | 2.7524e-8, 2.704e-8, 3.1254e-8, 3.6843e-8, 3.7797e-8, 3.8713e-8, | |||
| 24971 | 4.0135e-8, 4.2824e-8, 4.3004e-8, 4.0279e-8, 4.2781e-8, 4.522e-8, | |||
| 24972 | 4.8948e-8, 5.0172e-8, 4.8499e-8, 4.7182e-8, 4.2204e-8, 3.7701e-8, | |||
| 24973 | 3.0972e-8, 2.4654e-8, 1.9543e-8, 1.4609e-8, 1.1171e-8, 8.3367e-9, | |||
| 24974 | 6.3791e-9, 5.079e-9, 4.0655e-9, 3.3658e-9, 2.7882e-9, 2.4749e-9, | |||
| 24975 | 2.2287e-9, 2.0217e-9, 1.8191e-9, 1.5897e-9, 1.4191e-9, 1.2448e-9, | |||
| 24976 | 1.0884e-9, 9.3585e-10, 7.9429e-10, 7.3214e-10, 6.5008e-10, | |||
| 24977 | 5.7549e-10, 5.43e-10, 4.7251e-10, 4.3451e-10, 3.8446e-10, | |||
| 24978 | 3.5589e-10, 3.4432e-10, 2.8209e-10, 2.462e-10, 2.1278e-10, | |||
| 24979 | 1.8406e-10, 1.6314e-10, 1.3261e-10, 1.1696e-10, 9.6865e-11, | |||
| 24980 | 7.6814e-11, 6.6411e-11, 5.0903e-11, 4.0827e-11, 3.0476e-11, | |||
| 24981 | 2.323e-11, 1.7707e-11, 1.3548e-11, 1.0719e-11, 9.3026e-12, | |||
| 24982 | 8.7967e-12, 8.3136e-12, 7.3918e-12, 6.5293e-12, 5.9243e-12, | |||
| 24983 | 5.3595e-12, 3.5266e-12, 2.2571e-12, 1.615e-12, 1.1413e-12, | |||
| 24984 | 8.4998e-13, 7.0803e-13, 5.1747e-13, 4.0694e-13, 3.6528e-13, | |||
| 24985 | 3.367e-13, 3.1341e-13, 2.939e-13, 2.868e-13, 3.1283e-13, | |||
| 24986 | 3.7294e-13, 5.0194e-13, 6.7919e-13, 1.0455e-12, 1.523e-12, | |||
| 24987 | 2.3932e-12, 3.4231e-12, 5.0515e-12, 7.3193e-12, 9.9406e-12, | |||
| 24988 | 1.2193e-11, 1.4742e-11, 1.9269e-11, 2.1816e-11, 2.275e-11, | |||
| 24989 | 2.2902e-11, 2.3888e-11, 2.4902e-11, 2.216e-11, 2.0381e-11, | |||
| 24990 | 1.9903e-11, 2.0086e-11, 1.9304e-11, 2.0023e-11, 2.2244e-11, | |||
| 24991 | 2.545e-11, 3.1228e-11, 3.456e-11, 3.6923e-11, 3.7486e-11, | |||
| 24992 | 3.8124e-11, 3.8317e-11, 3.4737e-11, 3.3037e-11, 3.1724e-11, | |||
| 24993 | 2.984e-11, 2.8301e-11, 2.5857e-11, 2.3708e-11, 1.9452e-11, | |||
| 24994 | 1.6232e-11, 1.5174e-11, 1.4206e-11, 1.4408e-11, 1.5483e-11, | |||
| 24995 | 1.8642e-11, 2.3664e-11, 3.0181e-11, 4.016e-11, 5.2287e-11, | |||
| 24996 | 7.2754e-11, 1.0511e-10, 1.4531e-10, 2.0998e-10, 2.6883e-10, | |||
| 24997 | 3.3082e-10, 4.2638e-10, 5.3132e-10, 6.3617e-10, 7.1413e-10, | |||
| 24998 | 8.5953e-10, 9.9715e-10, 1.0796e-9, 1.0978e-9, 1.1052e-9, | |||
| 24999 | 1.1095e-9, 1.0641e-9, 9.7881e-10, 9.659e-10, 1.0332e-9, 1.1974e-9, | |||
| 25000 | 1.3612e-9, 1.5829e-9, 1.8655e-9, 2.1465e-9, 2.4779e-9, 2.737e-9, | |||
| 25001 | 2.9915e-9, 3.3037e-9, 3.6347e-9, 3.9587e-9, 4.4701e-9, 5.0122e-9, | |||
| 25002 | 5.8044e-9, 6.1916e-9, 6.9613e-9, 7.7863e-9, 8.282e-9, 9.4359e-9, | |||
| 25003 | 9.7387e-9, 1.0656e-8, 1.0746e-8, 1.121e-8, 1.1905e-8, 1.2194e-8, | |||
| 25004 | 1.3145e-8, 1.3738e-8, 1.3634e-8, 1.3011e-8, 1.2511e-8, 1.1805e-8, | |||
| 25005 | 1.2159e-8, 1.239e-8, 1.3625e-8, 1.5678e-8, 1.7886e-8, 1.9933e-8, | |||
| 25006 | 1.9865e-8, 1.9e-8, 1.7812e-8, 1.5521e-8, 1.2593e-8, 9.5635e-9, | |||
| 25007 | 7.2987e-9, 5.2489e-9, 3.5673e-9, 2.4206e-9, 1.6977e-9, 1.2456e-9, | |||
| 25008 | 9.3744e-10, 7.8379e-10, 6.996e-10, 6.6451e-10, 6.8521e-10, | |||
| 25009 | 7.4234e-10, 8.6658e-10, 9.4972e-10, 1.0791e-9, 1.2359e-9, | |||
| 25010 | 1.3363e-9, 1.5025e-9, 1.5368e-9, 1.6152e-9, 1.6184e-9, 1.6557e-9, | |||
| 25011 | 1.7035e-9, 1.6916e-9, 1.7237e-9, 1.7175e-9, 1.6475e-9, 1.5335e-9, | |||
| 25012 | 1.4272e-9, 1.3282e-9, 1.3459e-9, 1.4028e-9, 1.5192e-9, 1.7068e-9, | |||
| 25013 | 1.9085e-9, 2.1318e-9, 2.102e-9, 1.9942e-9, 1.8654e-9, 1.6391e-9, | |||
| 25014 | 1.3552e-9, 1.0186e-9, 7.854e-10, 5.7022e-10, 3.9247e-10, | |||
| 25015 | 2.5441e-10, 1.6699e-10, 1.1132e-10, 6.8989e-11, 4.5255e-11, | |||
| 25016 | 3.1106e-11, 2.3161e-11, 1.7618e-11, 1.438e-11, 1.1601e-11, | |||
| 25017 | 9.7148e-12, 8.4519e-12, 6.5392e-12, 5.4113e-12, 4.7624e-12, | |||
| 25018 | 4.0617e-12, 3.6173e-12, 2.8608e-12, 2.2724e-12, 1.7436e-12, | |||
| 25019 | 1.3424e-12, 1.0358e-12, 7.3064e-13, 5.45e-13, 4.0551e-13, | |||
| 25020 | 2.8642e-13, 2.1831e-13, 1.686e-13, 1.2086e-13, 1.015e-13, | |||
| 25021 | 9.355e-14, 8.4105e-14, 7.3051e-14, 6.9796e-14, 7.9949e-14, | |||
| 25022 | 1.0742e-13, 1.5639e-13, 2.1308e-13, 3.1226e-13, 4.6853e-13, | |||
| 25023 | 6.6917e-13, 1.0088e-12, 1.4824e-12, 2.2763e-12, 3.3917e-12, | |||
| 25024 | 4.4585e-12, 6.3187e-12, 8.4189e-12, 1.1302e-11, 1.3431e-11, | |||
| 25025 | 1.5679e-11, 1.9044e-11, 2.2463e-11, 2.3605e-11, 2.3619e-11, | |||
| 25026 | 2.3505e-11, 2.3805e-11, 2.2549e-11, 1.9304e-11, 1.8382e-11, | |||
| 25027 | 1.7795e-11, 1.8439e-11, 1.9146e-11, 2.1966e-11, 2.6109e-11, | |||
| 25028 | 3.1883e-11, 3.7872e-11, 4.3966e-11, 4.8789e-11, 5.3264e-11, | |||
| 25029 | 5.9705e-11, 6.3744e-11, 7.0163e-11, 7.9114e-11, 8.8287e-11, | |||
| 25030 | 9.9726e-11, 1.1498e-10, 1.37e-10, 1.6145e-10, 1.9913e-10, | |||
| 25031 | 2.2778e-10, 2.6216e-10, 2.977e-10, 3.3405e-10, 3.7821e-10, | |||
| 25032 | 3.9552e-10, 4.1322e-10, 4.0293e-10, 4.0259e-10, 3.8853e-10, | |||
| 25033 | 3.7842e-10, 3.8551e-10, 4.4618e-10, 5.0527e-10, 5.0695e-10, | |||
| 25034 | 5.1216e-10, 5.193e-10, 5.5794e-10, 5.332e-10, 5.2008e-10, | |||
| 25035 | 5.6888e-10, 6.1883e-10, 6.9006e-10, 6.9505e-10, 6.6768e-10, | |||
| 25036 | 6.329e-10, 5.6753e-10, 5.0327e-10, 3.983e-10, 3.1147e-10, | |||
| 25037 | 2.4416e-10, 1.886e-10, 1.3908e-10, 9.9156e-11, 7.3779e-11, | |||
| 25038 | 5.6048e-11, 4.2457e-11, 3.4505e-11, 2.9881e-11, 2.7865e-11, | |||
| 25039 | 2.8471e-11, 3.1065e-11, 3.4204e-11, 3.914e-11, 4.3606e-11, | |||
| 25040 | 4.9075e-11, 5.3069e-11, 5.5236e-11, 5.5309e-11, 5.3832e-11, | |||
| 25041 | 5.3183e-11, 5.1783e-11, 5.2042e-11, 5.4422e-11, 5.5656e-11, | |||
| 25042 | 5.4409e-11, 5.2659e-11, 5.1696e-11, 5.1726e-11, 4.9003e-11, | |||
| 25043 | 4.905e-11, 5.17e-11, 5.6818e-11, 6.3129e-11, 6.6542e-11, | |||
| 25044 | 6.4367e-11, 5.9908e-11, 5.447e-11, 4.7903e-11, 3.9669e-11, | |||
| 25045 | 2.9651e-11, 2.2286e-11, 1.6742e-11, 1.1827e-11, 7.7739e-12, | |||
| 25046 | 4.8805e-12, 3.1747e-12, 2.0057e-12, 1.255e-12, 8.7434e-13, | |||
| 25047 | 6.2755e-13, 4.9752e-13, 4.0047e-13, 3.5602e-13, 3.093e-13, | |||
| 25048 | 2.4903e-13, 1.9316e-13, 1.4995e-13, 1.2059e-13, 8.7242e-14, | |||
| 25049 | 6.4511e-14, 5.33e-14, 4.3741e-14, 3.4916e-14, 2.656e-14, | |||
| 25050 | 1.6923e-14, 1.1816e-14, 6.7071e-15, 3.6474e-15, 2.0686e-15, | |||
| 25051 | 1.1925e-15, 6.8948e-16, 3.9661e-16, 2.2576e-16, 1.2669e-16, | |||
| 25052 | 6.9908e-17, 3.7896e-17, 2.028e-17, 1.1016e-17, 6.7816e-18, | |||
| 25053 | 6.0958e-18, 8.9913e-18, 1.7201e-17, 3.4964e-17, 7.0722e-17, | |||
| 25054 | 1.402e-16, 2.7167e-16, 5.1478e-16, 9.55e-16, 1.7376e-15, | |||
| 25055 | 3.1074e-15, 5.4789e-15, 9.564e-15, 1.6635e-14, 2.9145e-14, | |||
| 25056 | 5.2179e-14, 8.8554e-14, 1.4764e-13, 2.3331e-13, 3.5996e-13, | |||
| 25057 | 5.2132e-13, 6.3519e-13, 7.3174e-13, 8.3752e-13, 9.8916e-13, | |||
| 25058 | 1.1515e-12, 1.4034e-12, 1.6594e-12, 2.1021e-12, 2.7416e-12, | |||
| 25059 | 3.4135e-12, 4.5517e-12, 5.5832e-12, 7.2303e-12, 9.9484e-12, | |||
| 25060 | 1.2724e-11, 1.6478e-11, 2.0588e-11, 2.5543e-11, 3.3625e-11, | |||
| 25061 | 4.1788e-11, 5.0081e-11, 6.0144e-11, 6.9599e-11, 8.4408e-11, | |||
| 25062 | 9.7143e-11, 1.0805e-10, 1.1713e-10, 1.2711e-10, 1.3727e-10, | |||
| 25063 | 1.4539e-10, 1.6049e-10, 1.768e-10, 2.0557e-10, 2.4967e-10, | |||
| 25064 | 3.0096e-10, 3.5816e-10, 4.0851e-10, 4.6111e-10, 5.2197e-10, | |||
| 25065 | 5.5043e-10, 6.0324e-10, 6.4983e-10, 6.7498e-10, 7.0545e-10, | |||
| 25066 | 7.068e-10, 7.5218e-10, 7.5723e-10, 7.784e-10, 8.0081e-10, | |||
| 25067 | 8.0223e-10, 7.7271e-10, 7.1676e-10, 6.7819e-10, 6.4753e-10, | |||
| 25068 | 6.5844e-10, 7.0163e-10, 7.7503e-10, 8.8152e-10, 9.9022e-10, | |||
| 25069 | 1.0229e-9, 9.9296e-10, 8.9911e-10, 7.7813e-10, 6.3785e-10, | |||
| 25070 | 4.7491e-10, 3.528e-10, 2.4349e-10, 1.6502e-10, 1.1622e-10, | |||
| 25071 | 8.6715e-11, 6.736e-11, 5.391e-11, 4.5554e-11, 4.13e-11, | |||
| 25072 | 3.9728e-11, 3.9e-11, 3.9803e-11, 4.1514e-11, 4.3374e-11, | |||
| 25073 | 4.6831e-11, 4.8921e-11, 5.1995e-11, 5.7242e-11, 6.2759e-11, | |||
| 25074 | 7.0801e-11, 7.4555e-11, 7.9754e-11, 8.7616e-11, 9.1171e-11, | |||
| 25075 | 1.0349e-10, 1.1047e-10, 1.2024e-10, 1.299e-10, 1.3725e-10, | |||
| 25076 | 1.5005e-10, 1.5268e-10, 1.5535e-10, 1.5623e-10, 1.5009e-10, | |||
| 25077 | 1.4034e-10, 1.3002e-10, 1.2225e-10, 1.1989e-10, 1.2411e-10, | |||
| 25078 | 1.3612e-10, 1.5225e-10, 1.7202e-10, 1.9471e-10, 1.9931e-10, | |||
| 25079 | 1.9079e-10, 1.7478e-10, 1.5259e-10, 1.2625e-10, 9.3332e-11, | |||
| 25080 | 6.8796e-11, 4.6466e-11, 2.9723e-11, 1.8508e-11, 1.2106e-11, | |||
| 25081 | 8.0142e-12, 5.4066e-12, 3.9329e-12, 3.1665e-12, 2.742e-12, | |||
| 25082 | 2.3996e-12, 2.3804e-12, 2.3242e-12, 2.4476e-12, 2.5331e-12, | |||
| 25083 | 2.3595e-12, 2.2575e-12, 2.1298e-12, 2.0088e-12, 1.8263e-12, | |||
| 25084 | 1.6114e-12, 1.4422e-12, 1.2946e-12, 1.0837e-12, 9.1282e-13, | |||
| 25085 | 7.2359e-13, 5.3307e-13, 3.8837e-13, 2.6678e-13, 1.6769e-13, | |||
| 25086 | 1.0826e-13, 7.2364e-14, 4.5201e-14, 3.0808e-14, 2.2377e-14, | |||
| 25087 | 1.704e-14, 9.2181e-15, 5.2934e-15, 3.5774e-15, 3.1431e-15, | |||
| 25088 | 3.7647e-15, 5.6428e-15, 9.5139e-15, 1.7322e-14, 2.8829e-14, | |||
| 25089 | 4.7708e-14, 6.9789e-14, 9.7267e-14, 1.4662e-13, 1.9429e-13, | |||
| 25090 | 2.5998e-13, 3.6636e-13, 4.796e-13, 6.5129e-13, 7.7638e-13, | |||
| 25091 | 9.3774e-13, 1.1467e-12, 1.3547e-12, 1.5686e-12, 1.6893e-12, | |||
| 25092 | 1.9069e-12, 2.1352e-12, 2.3071e-12, 2.4759e-12, 2.8247e-12, | |||
| 25093 | 3.4365e-12, 4.3181e-12, 5.6107e-12, 7.0017e-12, 8.6408e-12, | |||
| 25094 | 1.0974e-11, 1.3742e-11, 1.6337e-11, 2.0157e-11, 2.3441e-11, | |||
| 25095 | 2.6733e-11, 3.0247e-11, 3.3737e-11, 3.8618e-11, 4.1343e-11, | |||
| 25096 | 4.387e-11, 4.4685e-11, 4.4881e-11, 4.5526e-11, 4.3628e-11, | |||
| 25097 | 4.4268e-11, 4.6865e-11, 5.3426e-11, 5.402e-11, 5.3218e-11, | |||
| 25098 | 5.4587e-11, 5.636e-11, 5.774e-11, 5.6426e-11, 6.0399e-11, | |||
| 25099 | 6.6981e-11, 7.4319e-11, 7.7977e-11, 7.5539e-11, 7.161e-11, | |||
| 25100 | 6.4606e-11, 5.5498e-11, 4.3944e-11, 3.3769e-11, 2.5771e-11, | |||
| 25101 | 1.9162e-11, 1.3698e-11, 1.0173e-11, 7.8925e-12, 6.1938e-12, | |||
| 25102 | 4.7962e-12, 4.0811e-12, 3.3912e-12, 2.8625e-12, 2.4504e-12, | |||
| 25103 | 2.2188e-12, 2.2139e-12, 2.2499e-12, 2.2766e-12, 2.3985e-12, | |||
| 25104 | 2.5459e-12, 2.9295e-12, 3.4196e-12, 3.6155e-12, 4.0733e-12, | |||
| 25105 | 4.461e-12, 4.9372e-12, 5.4372e-12, 5.7304e-12, 6.164e-12, | |||
| 25106 | 6.1278e-12, 6.294e-12, 6.4947e-12, 6.8174e-12, 7.519e-12, | |||
| 25107 | 8.2608e-12, 8.4971e-12, 8.3484e-12, 8.1888e-12, 7.8552e-12, | |||
| 25108 | 7.8468e-12, 7.5943e-12, 7.9096e-12, 8.6869e-12, 9.1303e-12, | |||
| 25109 | 9.2547e-12, 8.9322e-12, 8.2177e-12, 7.3408e-12, 5.7956e-12, | |||
| 25110 | 4.447e-12, 3.5881e-12, 2.6748e-12, 1.7074e-12, 9.67e-13, | |||
| 25111 | 5.2645e-13, 2.9943e-13, 1.7316e-13, 1.0039e-13, 5.7859e-14, | |||
| 25112 | 3.2968e-14, 1.8499e-14, 1.0192e-14, 5.5015e-15, 2.904e-15, | |||
| 25113 | 1.4968e-15, 7.5244e-16, 3.6852e-16, 1.7568e-16, 8.1464e-17, | |||
| 25114 | 3.6717e-17, 1.6076e-17, 6.8341e-18, 2.8195e-18, 1.1286e-18, 0., | |||
| 25115 | 0., 0., 0., 0., 0., 0., 0., 0., 1.407e-18, 3.0405e-18, 6.4059e-18, | |||
| 25116 | 1.3169e-17, 2.6443e-17, 5.1917e-17, 9.9785e-17, 1.8802e-16, | |||
| 25117 | 3.4788e-16, 6.3328e-16, 1.137e-15, 2.0198e-15, 3.5665e-15, | |||
| 25118 | 6.3053e-15, 1.1309e-14, 2.1206e-14, 3.2858e-14, 5.5165e-14, | |||
| 25119 | 8.6231e-14, 1.2776e-13, 1.778e-13, 2.5266e-13, 3.6254e-13, | |||
| 25120 | 5.1398e-13, 6.8289e-13, 8.7481e-13, 1.1914e-12, 1.6086e-12, | |||
| 25121 | 2.0469e-12, 2.5761e-12, 3.4964e-12, 4.498e-12, 5.5356e-12, | |||
| 25122 | 6.7963e-12, 8.572e-12, 1.07e-11, 1.2983e-11, 1.627e-11, | |||
| 25123 | 1.9609e-11, 2.2668e-11, 2.5963e-11, 3.0918e-11, 3.493e-11, | |||
| 25124 | 3.933e-11, 4.4208e-11, 4.6431e-11, 5.1141e-11, 5.4108e-11, | |||
| 25125 | 5.8077e-11, 6.505e-11, 7.2126e-11, 8.1064e-11, 8.1973e-11, | |||
| 25126 | 8.1694e-11, 8.3081e-11, 8.024e-11, 7.9225e-11, 7.6256e-11, | |||
| 25127 | 7.8468e-11, 8.0041e-11, 8.1585e-11, 8.3485e-11, 8.3774e-11, | |||
| 25128 | 8.587e-11, 8.6104e-11, 8.8516e-11, 9.0814e-11, 9.2522e-11, | |||
| 25129 | 8.8913e-11, 7.8381e-11, 6.8568e-11, 5.6797e-11, 4.4163e-11, | |||
| 25130 | 3.2369e-11, 2.3259e-11, 1.6835e-11, 1.1733e-11, 8.5273e-12, | |||
| 25131 | 6.3805e-12, 4.8983e-12, 3.8831e-12, 3.261e-12, 2.8577e-12, | |||
| 25132 | 2.521e-12, 2.2913e-12, 2.0341e-12, 1.8167e-12, 1.6395e-12, | |||
| 25133 | 1.489e-12, 1.3516e-12, 1.2542e-12, 1.291e-12, 1.3471e-12, | |||
| 25134 | 1.4689e-12, 1.5889e-12, 1.6989e-12, 1.8843e-12, 2.0902e-12, | |||
| 25135 | 2.3874e-12, 2.7294e-12, 3.3353e-12, 4.0186e-12, 4.5868e-12, | |||
| 25136 | 5.2212e-12, 5.8856e-12, 6.5991e-12, 7.2505e-12, 7.6637e-12, | |||
| 25137 | 8.5113e-12, 9.4832e-12, 9.9678e-12, 1.0723e-11, 1.0749e-11, | |||
| 25138 | 1.138e-11, 1.1774e-11, 1.1743e-11, 1.2493e-11, 1.2559e-11, | |||
| 25139 | 1.2332e-11, 1.1782e-11, 1.1086e-11, 1.0945e-11, 1.1178e-11, | |||
| 25140 | 1.2083e-11, 1.3037e-11, 1.473e-11, 1.645e-11, 1.7403e-11, | |||
| 25141 | 1.7004e-11, 1.5117e-11, 1.3339e-11, 1.0844e-11, 8.0915e-12, | |||
| 25142 | 5.6615e-12, 3.7196e-12, 2.5194e-12, 1.6569e-12, 1.1201e-12, | |||
| 25143 | 8.2335e-13, 6.027e-13, 4.8205e-13, 4.1313e-13, 3.6243e-13, | |||
| 25144 | 3.2575e-13, 2.773e-13, 2.5292e-13, 2.3062e-13, 2.1126e-13, | |||
| 25145 | 2.1556e-13, 2.1213e-13, 2.2103e-13, 2.1927e-13, 2.0794e-13, | |||
| 25146 | 1.9533e-13, 1.6592e-13, 1.4521e-13, 1.1393e-13, 8.3772e-14, | |||
| 25147 | 6.2077e-14, 4.3337e-14, 2.7165e-14, 1.6821e-14, 9.5407e-15, | |||
| 25148 | 5.3093e-15, 3.032e-15, 1.7429e-15, 9.9828e-16, 5.6622e-16, | |||
| 25149 | 3.1672e-16, 1.7419e-16, 9.3985e-17, 4.9656e-17, 2.5652e-17, | |||
| 25150 | 1.2942e-17, 6.3695e-18, 3.0554e-18, 1.4273e-18, -0., -0., -0., | |||
| 25151 | -0., -0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., | |||
| 25152 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., | |||
| 25153 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., | |||
| 25154 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., | |||
| 25155 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., | |||
| 25156 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., | |||
| 25157 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., | |||
| 25158 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., | |||
| 25159 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., | |||
| 25160 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., | |||
| 25161 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., | |||
| 25162 | 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.} }; | |||
| 25163 | ||||
| 25164 | struct s_fh2ob_ { | |||
| 25165 | double e_1[3]; | |||
| 25166 | int e_2; | |||
| 25167 | } fh2ob_ = { {-20., 2e4, 10.}, 2003 }; | |||
| 25168 | ||||
| 25169 | struct s_sh2oa_ { | |||
| 25170 | double e_1[2003]; | |||
| 25171 | } sh2oa_ = { {.11109, .10573, .10162, .10573, .11109, .12574, .13499, | |||
| 25172 | .14327, .15065, .15164, .15022, .13677, .13115, .12253, .11271, | |||
| 25173 | .1007, .087495, .080118, .06994, .062034, .056051, .047663, | |||
| 25174 | .04245, .03669, .033441, .030711, .025205, .022113, .01888, | |||
| 25175 | .016653, .014626, .012065, .010709, .0091783, .0077274, .0067302, | |||
| 25176 | .0056164, .0049089, .0041497, .0035823, .0031124, .0026414, | |||
| 25177 | .0023167, .0020156, .0017829, .0015666, .0013928, .0012338, | |||
| 25178 | .0010932, 9.7939e-4, 8.8241e-4, 7.9173e-4, 7.1296e-4, 6.4179e-4, | |||
| 25179 | 5.8031e-4, 5.2647e-4, 4.7762e-4, 4.3349e-4, 3.9355e-4, 3.5887e-4, | |||
| 25180 | 3.2723e-4, 2.9919e-4, 2.7363e-4, 2.5013e-4, 2.2876e-4, 2.0924e-4, | |||
| 25181 | 1.9193e-4, 1.7618e-4, 1.6188e-4, 1.4891e-4, 1.3717e-4, 1.2647e-4, | |||
| 25182 | 1.1671e-4, 1.0786e-4, 9.9785e-5, 9.235e-5, 8.5539e-5, 7.9377e-5, | |||
| 25183 | 7.3781e-5, 6.8677e-5, 6.3993e-5, 5.9705e-5, 5.5788e-5, 5.2196e-5, | |||
| 25184 | 4.8899e-5, 4.5865e-5, 4.3079e-5, 4.0526e-5, 3.8182e-5, 3.6025e-5, | |||
| 25185 | 3.4038e-5, 3.2203e-5, 3.0511e-5, 2.8949e-5, 2.7505e-5, 2.617e-5, | |||
| 25186 | 2.4933e-5, 2.3786e-5, 2.2722e-5, 2.1736e-5, 2.0819e-5, 1.9968e-5, | |||
| 25187 | 1.9178e-5, 1.8442e-5, 1.776e-5, 1.7127e-5, 1.6541e-5, 1.5997e-5, | |||
| 25188 | 1.5495e-5, 1.5034e-5, 1.4614e-5, 1.423e-5, 1.3883e-5, 1.3578e-5, | |||
| 25189 | 1.3304e-5, 1.3069e-5, 1.2876e-5, 1.2732e-5, 1.2626e-5, 1.2556e-5, | |||
| 25190 | 1.2544e-5, 1.2604e-5, 1.2719e-5, 1.2883e-5, 1.3164e-5, 1.3581e-5, | |||
| 25191 | 1.4187e-5, 1.4866e-5, 1.5669e-5, 1.6717e-5, 1.8148e-5, 2.0268e-5, | |||
| 25192 | 2.2456e-5, 2.5582e-5, 2.9183e-5, 3.3612e-5, 3.9996e-5, 4.6829e-5, | |||
| 25193 | 5.5055e-5, 6.5897e-5, 7.536e-5, 8.7213e-5, 1.0046e-4, 1.1496e-4, | |||
| 25194 | 1.2943e-4, 1.5049e-4, 1.6973e-4, 1.8711e-4, 2.0286e-4, 2.2823e-4, | |||
| 25195 | 2.678e-4, 2.8766e-4, 3.1164e-4, 3.364e-4, 3.6884e-4, 3.9159e-4, | |||
| 25196 | 3.8712e-4, 3.7433e-4, 3.4503e-4, 3.1003e-4, 2.8027e-4, 2.5253e-4, | |||
| 25197 | 2.3408e-4, 2.2836e-4, 2.4442e-4, 2.7521e-4, 2.9048e-4, 3.0489e-4, | |||
| 25198 | 3.2646e-4, 3.388e-4, 3.3492e-4, 3.0987e-4, 2.9482e-4, 2.8711e-4, | |||
| 25199 | 2.6068e-4, 2.2683e-4, 1.9996e-4, 1.7788e-4, 1.6101e-4, 1.3911e-4, | |||
| 25200 | 1.2013e-4, 1.0544e-4, 9.4224e-5, 8.1256e-5, 7.3667e-5, 6.2233e-5, | |||
| 25201 | 5.5906e-5, 5.1619e-5, 4.514e-5, 4.0273e-5, 3.3268e-5, 3.0258e-5, | |||
| 25202 | 2.644e-5, 2.3103e-5, 2.0749e-5, 1.8258e-5, 1.6459e-5, 1.4097e-5, | |||
| 25203 | 1.2052e-5, 1.0759e-5, 9.14e-6, 8.1432e-6, 7.146e-6, 6.4006e-6, | |||
| 25204 | 5.6995e-6, 4.9372e-6, 4.4455e-6, 3.9033e-6, 3.474e-6, 3.1269e-6, | |||
| 25205 | 2.8059e-6, 2.5558e-6, 2.2919e-6, 2.0846e-6, 1.8983e-6, 1.7329e-6, | |||
| 25206 | 1.5929e-6, 1.4631e-6, 1.3513e-6, 1.2461e-6, 1.1519e-6, 1.0682e-6, | |||
| 25207 | 9.9256e-7, 9.2505e-7, 8.6367e-7, 8.0857e-7, 7.5674e-7, 7.0934e-7, | |||
| 25208 | 6.658e-7, 6.258e-7, 5.8853e-7, 5.5333e-7, 5.2143e-7, 4.9169e-7, | |||
| 25209 | 4.6431e-7, 4.3898e-7, 4.1564e-7, 3.9405e-7, 3.7403e-7, 3.5544e-7, | |||
| 25210 | 3.3819e-7, 3.2212e-7, 3.0714e-7, 2.9313e-7, 2.8003e-7, 2.6777e-7, | |||
| 25211 | 2.5628e-7, 2.4551e-7, 2.354e-7, 2.2591e-7, 2.1701e-7, 2.0866e-7, | |||
| 25212 | 2.0082e-7, 1.9349e-7, 1.8665e-7, 1.8027e-7, 1.7439e-7, 1.6894e-7, | |||
| 25213 | 1.64e-7, 1.5953e-7, 1.5557e-7, 1.5195e-7, 1.4888e-7, 1.4603e-7, | |||
| 25214 | 1.4337e-7, 1.4093e-7, 1.3828e-7, 1.3569e-7, 1.327e-7, 1.2984e-7, | |||
| 25215 | 1.2714e-7, 1.2541e-7, 1.2399e-7, 1.2102e-7, 1.1878e-7, 1.1728e-7, | |||
| 25216 | 1.1644e-7, 1.1491e-7, 1.1305e-7, 1.1235e-7, 1.1228e-7, 1.1224e-7, | |||
| 25217 | 1.1191e-7, 1.1151e-7, 1.1098e-7, 1.1068e-7, 1.1109e-7, 1.1213e-7, | |||
| 25218 | 1.1431e-7, 1.1826e-7, 1.2322e-7, 1.3025e-7, 1.4066e-7, 1.5657e-7, | |||
| 25219 | 1.7214e-7, 1.9449e-7, 2.2662e-7, 2.6953e-7, 3.1723e-7, 3.7028e-7, | |||
| 25220 | 4.4482e-7, 5.3852e-7, 6.2639e-7, 7.2175e-7, 7.7626e-7, 8.7248e-7, | |||
| 25221 | 9.6759e-7, 1.0102e-6, 1.062e-6, 1.1201e-6, 1.2107e-6, 1.2998e-6, | |||
| 25222 | 1.313e-6, 1.2856e-6, 1.235e-6, 1.1489e-6, 1.0819e-6, 1.012e-6, | |||
| 25223 | 9.4795e-7, 9.2858e-7, 9.806e-7, 1.0999e-6, 1.1967e-6, 1.2672e-6, | |||
| 25224 | 1.3418e-6, 1.3864e-6, 1.433e-6, 1.4592e-6, 1.4598e-6, 1.4774e-6, | |||
| 25225 | 1.4726e-6, 1.482e-6, 1.505e-6, 1.4984e-6, 1.5181e-6, 1.5888e-6, | |||
| 25226 | 1.685e-6, 1.769e-6, 1.9277e-6, 2.1107e-6, 2.3068e-6, 2.5347e-6, | |||
| 25227 | 2.8069e-6, 3.1345e-6, 3.5822e-6, 3.9051e-6, 4.3422e-6, 4.8704e-6, | |||
| 25228 | 5.5351e-6, 6.3454e-6, 7.269e-6, 8.2974e-6, 9.7609e-6, 1.1237e-5, | |||
| 25229 | 1.3187e-5, 1.5548e-5, 1.8784e-5, 2.1694e-5, 2.5487e-5, 3.0092e-5, | |||
| 25230 | 3.5385e-5, 4.2764e-5, 4.9313e-5, 5.58e-5, 6.2968e-5, 7.106e-5, | |||
| 25231 | 7.7699e-5, 8.7216e-5, 8.9335e-5, 9.2151e-5, 9.2779e-5, 9.4643e-5, | |||
| 25232 | 9.7978e-5, 1.0008e-4, 1.0702e-4, 1.1026e-4, 1.0828e-4, 1.055e-4, | |||
| 25233 | 1.0432e-4, 1.0428e-4, 9.898e-5, 9.4992e-5, 9.5159e-5, 1.0058e-4, | |||
| 25234 | 1.0738e-4, 1.155e-4, 1.1229e-4, 1.0596e-4, 1.0062e-4, 9.1742e-5, | |||
| 25235 | 8.4492e-5, 6.8099e-5, 5.6295e-5, 4.6502e-5, 3.8071e-5, 3.0721e-5, | |||
| 25236 | 2.3297e-5, 1.8688e-5, 1.483e-5, 1.2049e-5, 9.6754e-6, 7.9192e-6, | |||
| 25237 | 6.6673e-6, 5.6468e-6, 4.8904e-6, 4.2289e-6, 3.688e-6, 3.2396e-6, | |||
| 25238 | 2.8525e-6, 2.5363e-6, 2.2431e-6, 1.9949e-6, 1.7931e-6, 1.6164e-6, | |||
| 25239 | 1.4431e-6, 1.2997e-6, 1.1559e-6, 1.0404e-6, 9.43e-7, 8.4597e-7, | |||
| 25240 | 7.6133e-7, 6.8623e-7, 6.2137e-7, 5.6345e-7, 5.1076e-7, 4.6246e-7, | |||
| 25241 | 4.1906e-7, 3.8063e-7, 3.461e-7, 3.1554e-7, 2.8795e-7, 2.6252e-7, | |||
| 25242 | 2.3967e-7, 2.1901e-7, 2.0052e-7, 1.8384e-7, 1.6847e-7, 1.5459e-7, | |||
| 25243 | 1.4204e-7, 1.3068e-7, 1.2036e-7, 1.1095e-7, 1.0237e-7, 9.4592e-8, | |||
| 25244 | 8.753e-8, 8.1121e-8, 7.5282e-8, 6.9985e-8, 6.5189e-8, 6.0874e-8, | |||
| 25245 | 5.6989e-8, 5.353e-8, 5.0418e-8, 4.7745e-8, 4.5367e-8, 4.3253e-8, | |||
| 25246 | 4.1309e-8, 3.9695e-8, 3.8094e-8, 3.6482e-8, 3.4897e-8, 3.35e-8, | |||
| 25247 | 3.2302e-8, 3.0854e-8, 2.9698e-8, 2.8567e-8, 2.76e-8, 2.6746e-8, | |||
| 25248 | 2.5982e-8, 2.551e-8, 2.5121e-8, 2.4922e-8, 2.4909e-8, 2.5013e-8, | |||
| 25249 | 2.5216e-8, 2.5589e-8, 2.6049e-8, 2.6451e-8, 2.6978e-8, 2.7687e-8, | |||
| 25250 | 2.86e-8, 2.9643e-8, 3.0701e-8, 3.2058e-8, 3.3695e-8, 3.5558e-8, | |||
| 25251 | 3.7634e-8, 3.9875e-8, 4.2458e-8, 4.548e-8, 4.8858e-8, 5.2599e-8, | |||
| 25252 | 5.703e-8, 6.2067e-8, 6.7911e-8, 7.4579e-8, 8.1902e-8, 8.9978e-8, | |||
| 25253 | 9.987e-8, 1.1102e-7, 1.2343e-7, 1.3732e-7, 1.5394e-7, 1.7318e-7, | |||
| 25254 | 1.9383e-7, 2.1819e-7, 2.4666e-7, 2.8109e-7, 3.2236e-7, 3.776e-7, | |||
| 25255 | 4.4417e-7, 5.2422e-7, 6.1941e-7, 7.4897e-7, 9.2041e-7, 1.1574e-6, | |||
| 25256 | 1.4126e-6, 1.7197e-6, 2.1399e-6, 2.6266e-6, 3.3424e-6, 3.8418e-6, | |||
| 25257 | 4.514e-6, 5.0653e-6, 5.8485e-6, 6.5856e-6, 6.8937e-6, 6.9121e-6, | |||
| 25258 | 6.9005e-6, 6.9861e-6, 6.82e-6, 6.6089e-6, 6.5809e-6, 7.3496e-6, | |||
| 25259 | 8.0311e-6, 8.3186e-6, 8.426e-6, 9.0644e-6, 9.4965e-6, 9.4909e-6, | |||
| 25260 | 9.016e-6, 9.1494e-6, 9.3629e-6, 9.5944e-6, 9.5459e-6, 8.9919e-6, | |||
| 25261 | 8.604e-6, 7.8613e-6, 7.1567e-6, 6.2677e-6, 5.1899e-6, 4.4188e-6, | |||
| 25262 | 3.7167e-6, 3.0636e-6, 2.5573e-6, 2.0317e-6, 1.6371e-6, 1.3257e-6, | |||
| 25263 | 1.0928e-6, 8.9986e-7, 7.4653e-7, 6.1111e-7, 5.1395e-7, 4.35e-7, | |||
| 25264 | 3.7584e-7, 3.2633e-7, 2.8413e-7, 2.4723e-7, 2.1709e-7, 1.9294e-7, | |||
| 25265 | 1.7258e-7, 1.5492e-7, 1.382e-7, 1.2389e-7, 1.1189e-7, 1.0046e-7, | |||
| 25266 | 9.0832e-8, 8.2764e-8, 7.4191e-8, 6.7085e-8, 6.0708e-8, 5.4963e-8, | |||
| 25267 | 4.9851e-8, 4.5044e-8, 4.0916e-8, 3.722e-8, 3.3678e-8, 3.0663e-8, | |||
| 25268 | 2.7979e-8, 2.5495e-8, 2.3286e-8, 2.1233e-8, 1.9409e-8, 1.777e-8, | |||
| 25269 | 1.626e-8, 1.4885e-8, 1.3674e-8, 1.2543e-8, 1.1551e-8, 1.0655e-8, | |||
| 25270 | 9.8585e-9, 9.1398e-9, 8.4806e-9, 7.8899e-9, 7.3547e-9, 6.867e-9, | |||
| 25271 | 6.4131e-9, 5.993e-9, 5.6096e-9, 5.2592e-9, 4.9352e-9, 4.6354e-9, | |||
| 25272 | 4.3722e-9, 4.125e-9, 3.9081e-9, 3.7118e-9, 3.5372e-9, 3.3862e-9, | |||
| 25273 | 3.2499e-9, 3.1324e-9, 3.0313e-9, 2.9438e-9, 2.8686e-9, 2.805e-9, | |||
| 25274 | 2.7545e-9, 2.7149e-9, 2.6907e-9, 2.6724e-9, 2.6649e-9, 2.6642e-9, | |||
| 25275 | 2.6725e-9, 2.6871e-9, 2.7056e-9, 2.7357e-9, 2.7781e-9, 2.8358e-9, | |||
| 25276 | 2.9067e-9, 2.9952e-9, 3.102e-9, 3.2253e-9, 3.3647e-9, 3.5232e-9, | |||
| 25277 | 3.7037e-9, 3.9076e-9, 4.1385e-9, 4.3927e-9, 4.6861e-9, 5.0238e-9, | |||
| 25278 | 5.4027e-9, 5.8303e-9, 6.3208e-9, 6.8878e-9, 7.5419e-9, 8.313e-9, | |||
| 25279 | 9.1952e-9, 1.0228e-8, 1.1386e-8, 1.2792e-8, 1.4521e-8, 1.6437e-8, | |||
| 25280 | 1.8674e-8, 2.116e-8, 2.4506e-8, 2.8113e-8, 3.2636e-8, 3.7355e-8, | |||
| 25281 | 4.2234e-8, 4.9282e-8, 5.7358e-8, 6.6743e-8, 7.8821e-8, 9.4264e-8, | |||
| 25282 | 1.1542e-7, 1.3684e-7, 1.6337e-7, 2.0056e-7, 2.3252e-7, 2.6127e-7, | |||
| 25283 | 2.9211e-7, 3.3804e-7, 3.7397e-7, 3.8205e-7, 3.881e-7, 3.9499e-7, | |||
| 25284 | 3.9508e-7, 3.7652e-7, 3.5859e-7, 3.6198e-7, 3.7871e-7, 4.0925e-7, | |||
| 25285 | 4.2717e-7, 4.8241e-7, 5.2008e-7, 5.653e-7, 5.9531e-7, 6.1994e-7, | |||
| 25286 | 6.508e-7, 6.6355e-7, 6.9193e-7, 6.993e-7, 7.3058e-7, 7.4678e-7, | |||
| 25287 | 7.9193e-7, 8.3627e-7, 9.1267e-7, 1.0021e-6, 1.1218e-6, 1.2899e-6, | |||
| 25288 | 1.4447e-6, 1.7268e-6, 2.0025e-6, 2.3139e-6, 2.5599e-6, 2.892e-6, | |||
| 25289 | 3.3059e-6, 3.5425e-6, 3.9522e-6, 4.0551e-6, 4.2818e-6, 4.2892e-6, | |||
| 25290 | 4.421e-6, 4.5614e-6, 4.6739e-6, 4.9482e-6, 5.1118e-6, 5.0986e-6, | |||
| 25291 | 4.9417e-6, 4.9022e-6, 4.8449e-6, 4.8694e-6, 4.8111e-6, 4.9378e-6, | |||
| 25292 | 5.3231e-6, 5.7362e-6, 6.235e-6, 6.0951e-6, 5.7281e-6, 5.4585e-6, | |||
| 25293 | 4.9032e-6, 4.3009e-6, 3.4776e-6, 2.8108e-6, 2.2993e-6, 1.7999e-6, | |||
| 25294 | 1.387e-6, 1.075e-6, 8.5191e-7, 6.7951e-7, 5.5336e-7, 4.6439e-7, | |||
| 25295 | 4.0243e-7, 3.5368e-7, 3.1427e-7, 2.7775e-7, 2.4486e-7, 2.1788e-7, | |||
| 25296 | 1.9249e-7, 1.7162e-7, 1.5115e-7, 1.3478e-7, 1.2236e-7, 1.1139e-7, | |||
| 25297 | 1.0092e-7, 9.0795e-8, 8.2214e-8, 7.4691e-8, 6.7486e-8, 6.0414e-8, | |||
| 25298 | 5.4584e-8, 4.8754e-8, 4.3501e-8, 3.8767e-8, 3.4363e-8, 3.0703e-8, | |||
| 25299 | 2.7562e-8, 2.4831e-8, 2.2241e-8, 1.9939e-8, 1.8049e-8, 1.6368e-8, | |||
| 25300 | 1.4863e-8, 1.346e-8, 1.2212e-8, 1.1155e-8, 1.0185e-8, 9.3417e-9, | |||
| 25301 | 8.5671e-9, 7.8292e-9, 7.1749e-9, 6.5856e-9, 6.0588e-9, 5.5835e-9, | |||
| 25302 | 5.135e-9, 4.7395e-9, 4.3771e-9, 4.0476e-9, 3.756e-9, 3.4861e-9, | |||
| 25303 | 3.2427e-9, 3.024e-9, 2.8278e-9, 2.6531e-9, 2.4937e-9, 2.3511e-9, | |||
| 25304 | 2.2245e-9, 2.1133e-9, 2.0159e-9, 1.933e-9, 1.8669e-9, 1.8152e-9, | |||
| 25305 | 1.7852e-9, 1.7752e-9, 1.7823e-9, 1.8194e-9, 1.8866e-9, 1.9759e-9, | |||
| 25306 | 2.0736e-9, 2.2083e-9, 2.3587e-9, 2.4984e-9, 2.6333e-9, 2.816e-9, | |||
| 25307 | 3.0759e-9, 3.372e-9, 3.6457e-9, 4.0668e-9, 4.4541e-9, 4.7976e-9, | |||
| 25308 | 5.0908e-9, 5.4811e-9, 6.1394e-9, 6.3669e-9, 6.5714e-9, 6.8384e-9, | |||
| 25309 | 7.1918e-9, 7.3741e-9, 7.2079e-9, 7.2172e-9, 7.2572e-9, 7.3912e-9, | |||
| 25310 | 7.6188e-9, 8.3291e-9, 8.7885e-9, 9.2412e-9, 1.0021e-8, 1.0752e-8, | |||
| 25311 | 1.1546e-8, 1.1607e-8, 1.1949e-8, 1.2346e-8, 1.2516e-8, 1.2826e-8, | |||
| 25312 | 1.3053e-8, 1.3556e-8, 1.4221e-8, 1.5201e-8, 1.6661e-8, 1.8385e-8, | |||
| 25313 | 2.0585e-8, 2.3674e-8, 2.7928e-8, 3.3901e-8, 4.1017e-8, 4.9595e-8, | |||
| 25314 | 6.0432e-8, 7.6304e-8, 9.0764e-8, 1.0798e-7, 1.2442e-7, 1.4404e-7, | |||
| 25315 | 1.6331e-7, 1.8339e-7, 2.0445e-7, 2.2288e-7, 2.3083e-7, 2.3196e-7, | |||
| 25316 | 2.3919e-7, 2.3339e-7, 2.3502e-7, 2.3444e-7, 2.6395e-7, 2.9928e-7, | |||
| 25317 | 3.0025e-7, 3.0496e-7, 3.1777e-7, 3.4198e-7, 3.4739e-7, 3.2696e-7, | |||
| 25318 | 3.41e-7, 3.5405e-7, 3.7774e-7, 3.8285e-7, 3.6797e-7, 3.58e-7, | |||
| 25319 | 3.2283e-7, 2.9361e-7, 2.4881e-7, 2.0599e-7, 1.7121e-7, 1.3641e-7, | |||
| 25320 | 1.1111e-7, 8.9413e-8, 7.3455e-8, 6.2078e-8, 5.2538e-8, 4.5325e-8, | |||
| 25321 | 3.9005e-8, 3.4772e-8, 3.1203e-8, 2.8132e-8, 2.525e-8, 2.2371e-8, | |||
| 25322 | 2.0131e-8, 1.7992e-8, 1.6076e-8, 1.4222e-8, 1.249e-8, 1.1401e-8, | |||
| 25323 | 1.0249e-8, 9.2279e-9, 8.5654e-9, 7.6227e-9, 6.9648e-9, 6.2466e-9, | |||
| 25324 | 5.7252e-9, 5.38e-9, 4.696e-9, 4.2194e-9, 3.7746e-9, 3.3813e-9, | |||
| 25325 | 3.0656e-9, 2.6885e-9, 2.4311e-9, 2.1572e-9, 1.8892e-9, 1.7038e-9, | |||
| 25326 | 1.4914e-9, 1.3277e-9, 1.1694e-9, 1.0391e-9, 9.2779e-10, | |||
| 25327 | 8.3123e-10, 7.4968e-10, 6.8385e-10, 6.2915e-10, 5.7784e-10, | |||
| 25328 | 5.2838e-10, 4.8382e-10, 4.4543e-10, 4.1155e-10, 3.7158e-10, | |||
| 25329 | 3.3731e-10, 3.0969e-10, 2.8535e-10, 2.6416e-10, 2.4583e-10, | |||
| 25330 | 2.2878e-10, 2.1379e-10, 2.0073e-10, 1.8907e-10, 1.7866e-10, | |||
| 25331 | 1.6936e-10, 1.6119e-10, 1.5424e-10, 1.4847e-10, 1.4401e-10, | |||
| 25332 | 1.4068e-10, 1.3937e-10, 1.3943e-10, 1.4281e-10, 1.4766e-10, | |||
| 25333 | 1.5701e-10, 1.7079e-10, 1.8691e-10, 2.0081e-10, 2.174e-10, | |||
| 25334 | 2.4847e-10, 2.6463e-10, 2.7087e-10, 2.7313e-10, 2.8352e-10, | |||
| 25335 | 2.9511e-10, 2.8058e-10, 2.7227e-10, 2.7356e-10, 2.8012e-10, | |||
| 25336 | 2.8034e-10, 2.9031e-10, 3.103e-10, 3.3745e-10, 3.8152e-10, | |||
| 25337 | 4.0622e-10, 4.2673e-10, 4.3879e-10, 4.5488e-10, 4.7179e-10, | |||
| 25338 | 4.614e-10, 4.6339e-10, 4.6716e-10, 4.7024e-10, 4.7931e-10, | |||
| 25339 | 4.8503e-10, 4.9589e-10, 4.9499e-10, 5.0363e-10, 5.3184e-10, | |||
| 25340 | 5.6451e-10, 6.0932e-10, 6.6469e-10, 7.4076e-10, 8.3605e-10, | |||
| 25341 | 9.4898e-10, 1.0935e-9, 1.2593e-9, 1.4913e-9, 1.8099e-9, 2.1842e-9, | |||
| 25342 | 2.7284e-9, 3.2159e-9, 3.7426e-9, 4.5226e-9, 5.3512e-9, 6.1787e-9, | |||
| 25343 | 6.8237e-9, 7.9421e-9, 9.0002e-9, 9.6841e-9, 9.9558e-9, 1.0232e-8, | |||
| 25344 | 1.0591e-8, 1.0657e-8, 1.0441e-8, 1.0719e-8, 1.1526e-8, 1.2962e-8, | |||
| 25345 | 1.4336e-8, 1.615e-8, 1.8417e-8, 2.0725e-8, 2.3426e-8, 2.5619e-8, | |||
| 25346 | 2.7828e-8, 3.0563e-8, 3.3438e-8, 3.6317e-8, 4.04e-8, 4.4556e-8, | |||
| 25347 | 5.0397e-8, 5.3315e-8, 5.9185e-8, 6.5311e-8, 6.9188e-8, 7.7728e-8, | |||
| 25348 | 7.9789e-8, 8.6598e-8, 8.7768e-8, 9.1773e-8, 9.7533e-8, 1.0007e-7, | |||
| 25349 | 1.065e-7, 1.0992e-7, 1.0864e-7, 1.0494e-7, 1.0303e-7, 1.0031e-7, | |||
| 25350 | 1.0436e-7, 1.0537e-7, 1.1184e-7, 1.2364e-7, 1.3651e-7, 1.4881e-7, | |||
| 25351 | 1.4723e-7, 1.4118e-7, 1.3371e-7, 1.1902e-7, 1.0007e-7, 7.9628e-8, | |||
| 25352 | 6.4362e-8, 5.0243e-8, 3.8133e-8, 2.94e-8, 2.3443e-8, 1.9319e-8, | |||
| 25353 | 1.6196e-8, 1.4221e-8, 1.2817e-8, 1.1863e-8, 1.1383e-8, 1.1221e-8, | |||
| 25354 | 1.1574e-8, 1.1661e-8, 1.2157e-8, 1.2883e-8, 1.3295e-8, 1.4243e-8, | |||
| 25355 | 1.424e-8, 1.4614e-8, 1.4529e-8, 1.4685e-8, 1.4974e-8, 1.479e-8, | |||
| 25356 | 1.489e-8, 1.4704e-8, 1.4142e-8, 1.3374e-8, 1.2746e-8, 1.2172e-8, | |||
| 25357 | 1.2336e-8, 1.2546e-8, 1.3065e-8, 1.409e-8, 1.5215e-8, 1.654e-8, | |||
| 25358 | 1.6144e-8, 1.5282e-8, 1.4358e-8, 1.2849e-8, 1.0998e-8, 8.6956e-9, | |||
| 25359 | 7.0881e-9, 5.5767e-9, 4.2792e-9, 3.2233e-9, 2.502e-9, 1.9985e-9, | |||
| 25360 | 1.5834e-9, 1.3015e-9, 1.0948e-9, 9.4141e-10, 8.1465e-10, | |||
| 25361 | 7.1517e-10, 6.2906e-10, 5.5756e-10, 4.9805e-10, 4.3961e-10, | |||
| 25362 | 3.9181e-10, 3.5227e-10, 3.167e-10, 2.8667e-10, 2.5745e-10, | |||
| 25363 | 2.3212e-10, 2.0948e-10, 1.897e-10, 1.7239e-10, 1.5659e-10, | |||
| 25364 | 1.4301e-10, 1.3104e-10, 1.2031e-10, 1.1095e-10, 1.0262e-10, | |||
| 25365 | 9.513e-11, 8.8595e-11, 8.2842e-11, 7.7727e-11, 7.3199e-11, | |||
| 25366 | 6.9286e-11, 6.5994e-11, 6.3316e-11, 6.1244e-11, 5.9669e-11, | |||
| 25367 | 5.8843e-11, 5.8832e-11, 5.9547e-11, 6.1635e-11, 6.4926e-11, | |||
| 25368 | 7.0745e-11, 7.8802e-11, 8.6724e-11, 1.0052e-10, 1.1575e-10, | |||
| 25369 | 1.3626e-10, 1.5126e-10, 1.6751e-10, 1.9239e-10, 2.1748e-10, | |||
| 25370 | 2.2654e-10, 2.2902e-10, 2.324e-10, 2.4081e-10, 2.393e-10, | |||
| 25371 | 2.2378e-10, 2.2476e-10, 2.2791e-10, 2.4047e-10, 2.5305e-10, | |||
| 25372 | 2.8073e-10, 3.1741e-10, 3.6592e-10, 4.1495e-10, 4.6565e-10, | |||
| 25373 | 5.099e-10, 5.5607e-10, 6.1928e-10, 6.6779e-10, 7.335e-10, | |||
| 25374 | 8.1434e-10, 8.9635e-10, 9.9678e-10, 1.1256e-9, 1.2999e-9, | |||
| 25375 | 1.4888e-9, 1.7642e-9, 1.9606e-9, 2.2066e-9, 2.4601e-9, 2.7218e-9, | |||
| 25376 | 3.0375e-9, 3.1591e-9, 3.2852e-9, 3.2464e-9, 3.3046e-9, 3.271e-9, | |||
| 25377 | 3.2601e-9, 3.3398e-9, 3.7446e-9, 4.0795e-9, 4.0284e-9, 4.0584e-9, | |||
| 25378 | 4.1677e-9, 4.5358e-9, 4.4097e-9, 4.2744e-9, 4.5449e-9, 4.8147e-9, | |||
| 25379 | 5.2656e-9, 5.2476e-9, 5.0275e-9, 4.7968e-9, 4.3654e-9, 3.953e-9, | |||
| 25380 | 3.2447e-9, 2.6489e-9, 2.1795e-9, 1.788e-9, 1.4309e-9, 1.1256e-9, | |||
| 25381 | 9.1903e-10, 7.6533e-10, 6.3989e-10, 5.5496e-10, 4.9581e-10, | |||
| 25382 | 4.5722e-10, 4.3898e-10, 4.3505e-10, 4.3671e-10, 4.5329e-10, | |||
| 25383 | 4.6827e-10, 4.9394e-10, 5.1122e-10, 5.1649e-10, 5.0965e-10, | |||
| 25384 | 4.9551e-10, 4.8928e-10, 4.7947e-10, 4.7989e-10, 4.9071e-10, | |||
| 25385 | 4.8867e-10, 4.726e-10, 4.5756e-10, 4.54e-10, 4.5993e-10, | |||
| 25386 | 4.4042e-10, 4.3309e-10, 4.4182e-10, 4.6735e-10, 5.0378e-10, | |||
| 25387 | 5.2204e-10, 5.0166e-10, 4.6799e-10, 4.3119e-10, 3.8803e-10, | |||
| 25388 | 3.3291e-10, 2.6289e-10, 2.1029e-10, 1.7011e-10, 1.3345e-10, | |||
| 25389 | 1.0224e-10, 7.8207e-11, 6.2451e-11, 5.0481e-11, 4.1507e-11, | |||
| 25390 | 3.5419e-11, 3.0582e-11, 2.69e-11, 2.3778e-11, 2.1343e-11, | |||
| 25391 | 1.9182e-11, 1.7162e-11, 1.5391e-11, 1.3877e-11, 1.2619e-11, | |||
| 25392 | 1.145e-11, 1.0461e-11, 9.6578e-12, 8.9579e-12, 8.3463e-12, | |||
| 25393 | 7.8127e-12, 7.3322e-12, 6.9414e-12, 6.6037e-12, 6.3285e-12, | |||
| 25394 | 6.1095e-12, 5.9387e-12, 5.8118e-12, 5.726e-12, 5.6794e-12, | |||
| 25395 | 5.6711e-12, 5.7003e-12, 5.767e-12, 5.8717e-12, 6.0151e-12, | |||
| 25396 | 6.1984e-12, 6.4232e-12, 6.6918e-12, 7.0065e-12, 7.3705e-12, | |||
| 25397 | 7.7873e-12, 8.2612e-12, 8.7972e-12, 9.4009e-12, 1.0079e-11, | |||
| 25398 | 1.084e-11, 1.1692e-11, 1.2648e-11, 1.3723e-11, 1.4935e-11, | |||
| 25399 | 1.6313e-11, 1.7905e-11, 1.974e-11, 2.1898e-11, 2.4419e-11, | |||
| 25400 | 2.7426e-11, 3.0869e-11, 3.4235e-11, 3.7841e-11, 4.1929e-11, | |||
| 25401 | 4.6776e-11, 5.2123e-11, 5.8497e-11, 6.5294e-11, 7.4038e-11, | |||
| 25402 | 8.4793e-11, 9.6453e-11, 1.1223e-10, 1.2786e-10, 1.4882e-10, | |||
| 25403 | 1.7799e-10, 2.0766e-10, 2.4523e-10, 2.8591e-10, 3.3386e-10, | |||
| 25404 | 4.0531e-10, 4.7663e-10, 5.4858e-10, 6.3377e-10, 7.1688e-10, | |||
| 25405 | 8.4184e-10, 9.5144e-10, 1.0481e-9, 1.1356e-9, 1.2339e-9, | |||
| 25406 | 1.3396e-9, 1.4375e-9, 1.5831e-9, 1.7323e-9, 1.9671e-9, 2.2976e-9, | |||
| 25407 | 2.6679e-9, 3.0777e-9, 3.4321e-9, 3.8192e-9, 4.2711e-9, 4.4903e-9, | |||
| 25408 | 4.8931e-9, 5.2253e-9, 5.404e-9, 5.6387e-9, 5.6704e-9, 6.0345e-9, | |||
| 25409 | 6.1079e-9, 6.2576e-9, 6.4039e-9, 6.3776e-9, 6.1878e-9, 5.8616e-9, | |||
| 25410 | 5.7036e-9, 5.584e-9, 5.6905e-9, 5.8931e-9, 6.2478e-9, 6.8291e-9, | |||
| 25411 | 7.4528e-9, 7.6078e-9, 7.3898e-9, 6.7573e-9, 5.9827e-9, 5.0927e-9, | |||
| 25412 | 4.0099e-9, 3.1933e-9, 2.4296e-9, 1.8485e-9, 1.4595e-9, 1.2017e-9, | |||
| 25413 | 1.0164e-9, 8.7433e-10, 7.7108e-10, 7.0049e-10, 6.5291e-10, | |||
| 25414 | 6.1477e-10, 5.9254e-10, 5.815e-10, 5.7591e-10, 5.849e-10, | |||
| 25415 | 5.8587e-10, 5.9636e-10, 6.2408e-10, 6.5479e-10, 7.048e-10, | |||
| 25416 | 7.2313e-10, 7.5524e-10, 8.0863e-10, 8.3386e-10, 9.2342e-10, | |||
| 25417 | 9.6754e-10, 1.0293e-9, 1.0895e-9, 1.133e-9, 1.221e-9, 1.2413e-9, | |||
| 25418 | 1.2613e-9, 1.2671e-9, 1.2225e-9, 1.1609e-9, 1.0991e-9, 1.06e-9, | |||
| 25419 | 1.057e-9, 1.0818e-9, 1.1421e-9, 1.227e-9, 1.337e-9, 1.4742e-9, | |||
| 25420 | 1.4946e-9, 1.4322e-9, 1.321e-9, 1.1749e-9, 1.0051e-9, 7.8387e-10, | |||
| 25421 | 6.1844e-10, 4.6288e-10, 3.4164e-10, 2.5412e-10, 1.9857e-10, | |||
| 25422 | 1.5876e-10, 1.2966e-10, 1.092e-10, 9.4811e-11, 8.3733e-11, | |||
| 25423 | 7.3906e-11, 6.7259e-11, 6.1146e-11, 5.7119e-11, 5.3546e-11, | |||
| 25424 | 4.8625e-11, 4.4749e-11, 4.1089e-11, 3.7825e-11, 3.4465e-11, | |||
| 25425 | 3.1018e-11, 2.8109e-11, 2.561e-11, 2.2859e-11, 2.049e-11, | |||
| 25426 | 1.8133e-11, 1.5835e-11, 1.3949e-11, 1.2295e-11, 1.0799e-11, | |||
| 25427 | 9.6544e-12, 8.7597e-12, 7.999e-12, 7.3973e-12, 6.9035e-12, | |||
| 25428 | 6.4935e-12, 6.1195e-12, 5.8235e-12, 5.5928e-12, 5.4191e-12, | |||
| 25429 | 5.2993e-12, 5.2338e-12, 5.2272e-12, 5.2923e-12, 5.4252e-12, | |||
| 25430 | 5.6523e-12, 5.9433e-12, 6.3197e-12, 6.9016e-12, 7.5016e-12, | |||
| 25431 | 8.2885e-12, 9.405e-12, 1.0605e-11, 1.2257e-11, 1.3622e-11, | |||
| 25432 | 1.5353e-11, 1.7543e-11, 1.9809e-11, 2.2197e-11, 2.4065e-11, | |||
| 25433 | 2.6777e-11, 2.9751e-11, 3.2543e-11, 3.5536e-11, 3.9942e-11, | |||
| 25434 | 4.6283e-11, 5.4556e-11, 6.549e-11, 7.6803e-11, 9.0053e-11, | |||
| 25435 | 1.0852e-10, 1.2946e-10, 1.4916e-10, 1.7748e-10, 2.0073e-10, | |||
| 25436 | 2.2485e-10, 2.5114e-10, 2.7715e-10, 3.1319e-10, 3.3305e-10, | |||
| 25437 | 3.5059e-10, 3.5746e-10, 3.6311e-10, 3.7344e-10, 3.6574e-10, | |||
| 25438 | 3.7539e-10, 3.9434e-10, 4.351e-10, 4.334e-10, 4.2588e-10, | |||
| 25439 | 4.3977e-10, 4.6062e-10, 4.7687e-10, 4.6457e-10, 4.8578e-10, | |||
| 25440 | 5.2344e-10, 5.6752e-10, 5.8702e-10, 5.6603e-10, 5.3784e-10, | |||
| 25441 | 4.9181e-10, 4.3272e-10, 3.5681e-10, 2.8814e-10, 2.332e-10, | |||
| 25442 | 1.8631e-10, 1.4587e-10, 1.1782e-10, 9.8132e-11, 8.2528e-11, | |||
| 25443 | 6.9174e-11, 6.1056e-11, 5.3459e-11, 4.7116e-11, 4.1878e-11, | |||
| 25444 | 3.8125e-11, 3.6347e-11, 3.5071e-11, 3.3897e-11, 3.3541e-11, | |||
| 25445 | 3.3563e-11, 3.5469e-11, 3.8111e-11, 3.8675e-11, 4.1333e-11, | |||
| 25446 | 4.3475e-11, 4.6476e-11, 4.9761e-11, 5.138e-11, 5.4135e-11, | |||
| 25447 | 5.3802e-11, 5.5158e-11, 5.6864e-11, 5.9311e-11, 6.3827e-11, | |||
| 25448 | 6.7893e-11, 6.823e-11, 6.6694e-11, 6.6018e-11, 6.4863e-11, | |||
| 25449 | 6.5893e-11, 6.3813e-11, 6.4741e-11, 6.863e-11, 7.0255e-11, | |||
| 25450 | 7.0667e-11, 6.881e-11, 6.4104e-11, 5.8136e-11, 4.7242e-11, | |||
| 25451 | 3.7625e-11, 3.1742e-11, 2.5581e-11, 1.8824e-11, 1.3303e-11, | |||
| 25452 | 9.6919e-12, 7.5353e-12, 6.0986e-12, 5.0742e-12, 4.3094e-12, | |||
| 25453 | 3.719e-12, 3.252e-12, 2.8756e-12, 2.568e-12, 2.3139e-12, | |||
| 25454 | 2.1025e-12, 1.9257e-12, 1.7777e-12, 1.6539e-12, 1.5508e-12, | |||
| 25455 | 1.4657e-12, 1.3966e-12, 1.3417e-12, 1.2998e-12, 1.27e-12, | |||
| 25456 | 1.2514e-12, 1.2437e-12, 1.2463e-12, 1.2592e-12, 1.2823e-12, | |||
| 25457 | 1.3157e-12, 1.3596e-12, 1.4144e-12, 1.4806e-12, 1.5588e-12, | |||
| 25458 | 1.6497e-12, 1.7544e-12, 1.8738e-12, 2.0094e-12, 2.1626e-12, | |||
| 25459 | 2.3354e-12, 2.5297e-12, 2.7483e-12, 2.9941e-12, 3.2708e-12, | |||
| 25460 | 3.5833e-12, 3.9374e-12, 4.3415e-12, 4.8079e-12, 5.3602e-12, | |||
| 25461 | 5.9816e-12, 6.7436e-12, 7.6368e-12, 8.6812e-12, 9.8747e-12, | |||
| 25462 | 1.135e-11, 1.3181e-11, 1.5406e-11, 1.7868e-11, 2.0651e-11, | |||
| 25463 | 2.4504e-11, 2.9184e-11, 3.4159e-11, 3.9979e-11, 4.8704e-11, | |||
| 25464 | 5.7856e-11, 6.7576e-11, 7.9103e-11, 9.437e-11, 1.1224e-10, | |||
| 25465 | 1.3112e-10, 1.5674e-10, 1.8206e-10, 2.0576e-10, 2.3187e-10, | |||
| 25466 | 2.7005e-10, 3.0055e-10, 3.3423e-10, 3.6956e-10, 3.8737e-10, | |||
| 25467 | 4.263e-10, 4.5154e-10, 4.8383e-10, 5.3582e-10, 5.8109e-10, | |||
| 25468 | 6.3741e-10, 6.3874e-10, 6.387e-10, 6.5818e-10, 6.5056e-10, | |||
| 25469 | 6.5291e-10, 6.3159e-10, 6.3984e-10, 6.4549e-10, 6.5444e-10, | |||
| 25470 | 6.7035e-10, 6.7665e-10, 6.9124e-10, 6.8451e-10, 6.9255e-10, | |||
| 25471 | 6.9923e-10, 7.0396e-10, 6.7715e-10, 6.0371e-10, 5.3774e-10, | |||
| 25472 | 4.6043e-10, 3.7635e-10, 2.9484e-10, 2.2968e-10, 1.8185e-10, | |||
| 25473 | 1.4191e-10, 1.1471e-10, 9.479e-11, 7.9613e-11, 6.7989e-11, | |||
| 25474 | 5.9391e-11, 5.281e-11, 4.7136e-11, 4.2618e-11, 3.8313e-11, | |||
| 25475 | 3.4686e-11, 3.1669e-11, 2.911e-11, 2.6871e-11, 2.5074e-11, | |||
| 25476 | 2.4368e-11, 2.3925e-11, 2.4067e-11, 2.4336e-11, 2.4704e-11, | |||
| 25477 | 2.5823e-11, 2.7177e-11, 2.9227e-11, 3.1593e-11, 3.573e-11, | |||
| 25478 | 4.0221e-11, 4.3994e-11, 4.8448e-11, 5.3191e-11, 5.8552e-11, | |||
| 25479 | 6.3458e-11, 6.6335e-11, 7.2457e-11, 7.9091e-11, 8.2234e-11, | |||
| 25480 | 8.7668e-11, 8.7951e-11, 9.2952e-11, 9.6157e-11, 9.5926e-11, | |||
| 25481 | 1.012e-10, 1.0115e-10, 9.9577e-11, 9.6633e-11, 9.2891e-11, | |||
| 25482 | 9.3315e-11, 9.5584e-11, 1.0064e-10, 1.0509e-10, 1.1455e-10, | |||
| 25483 | 1.2443e-10, 1.2963e-10, 1.2632e-10, 1.1308e-10, 1.0186e-10, | |||
| 25484 | 8.588e-11, 6.7863e-11, 5.1521e-11, 3.778e-11, 2.8842e-11, | |||
| 25485 | 2.2052e-11, 1.7402e-11, 1.4406e-11, 1.1934e-11, 1.0223e-11, | |||
| 25486 | 8.9544e-12, 7.9088e-12, 7.0675e-12, 6.2222e-12, 5.6051e-12, | |||
| 25487 | 5.0502e-12, 4.5578e-12, 4.2636e-12, 3.9461e-12, 3.7599e-12, | |||
| 25488 | 3.5215e-12, 3.2467e-12, 3.0018e-12, 2.6558e-12, 2.3928e-12, | |||
| 25489 | 2.0707e-12, 1.7575e-12, 1.5114e-12, 1.2941e-12, 1.1004e-12, | |||
| 25490 | 9.5175e-13, 8.2894e-13, 7.3253e-13, 6.5551e-13, 5.9098e-13, | |||
| 25491 | 5.3548e-13, 4.8697e-13, 4.4413e-13, 4.06e-13, 3.7188e-13, | |||
| 25492 | 3.4121e-13, 3.1356e-13, 2.8856e-13, 2.659e-13, 2.4533e-13, | |||
| 25493 | 2.2663e-13, 2.096e-13, 1.9407e-13, 1.799e-13, 1.6695e-13, | |||
| 25494 | 1.5512e-13, 1.4429e-13, 1.3437e-13, 1.2527e-13, 1.1693e-13, | |||
| 25495 | 1.0927e-13, 1.0224e-13, 9.5767e-14, 8.9816e-14, 8.4335e-14, | |||
| 25496 | 7.9285e-14, 7.4626e-14, 7.0325e-14, 6.6352e-14, 6.2676e-14, | |||
| 25497 | 5.9274e-14, 5.6121e-14, 5.3195e-14, 5.0479e-14, 4.7953e-14, | |||
| 25498 | 4.5602e-14, 4.3411e-14, 4.1367e-14, 3.9456e-14, 3.767e-14, | |||
| 25499 | 3.5996e-14, 3.4427e-14, 3.2952e-14, 3.1566e-14, 3.0261e-14, | |||
| 25500 | 2.903e-14, 2.7868e-14, 2.677e-14, 2.573e-14, 2.4745e-14, | |||
| 25501 | 2.3809e-14, 2.2921e-14, 2.2076e-14, 2.1271e-14, 2.0504e-14, | |||
| 25502 | 1.9772e-14, 1.9073e-14, 1.8404e-14, 1.7764e-14, 1.7151e-14, | |||
| 25503 | 1.6564e-14, 1.6e-14, 1.5459e-14, 1.4939e-14, 1.4439e-14, | |||
| 25504 | 1.3958e-14, 1.3495e-14, 1.3049e-14, 1.262e-14, 1.2206e-14, | |||
| 25505 | 1.1807e-14, 1.1422e-14, 1.105e-14, 1.0691e-14, 1.0345e-14, | |||
| 25506 | 1.001e-14, 9.687e-15, 9.3747e-15, 9.0727e-15, 8.7808e-15, | |||
| 25507 | 8.4986e-15, 8.2257e-15, 7.9617e-15, 7.7064e-15, 7.4594e-15, | |||
| 25508 | 7.2204e-15, 6.9891e-15, 6.7653e-15, 6.5488e-15, 6.3392e-15, | |||
| 25509 | 6.1363e-15, 5.9399e-15, 5.7499e-15, 5.5659e-15, 5.3878e-15, | |||
| 25510 | 5.2153e-15, 5.0484e-15, 4.8868e-15, 4.7303e-15, 4.5788e-15, | |||
| 25511 | 4.4322e-15, 4.2902e-15, 4.1527e-15, 4.0196e-15, 3.8907e-15, | |||
| 25512 | 3.7659e-15, 3.6451e-15, 3.5281e-15, 3.4149e-15, 3.3052e-15, | |||
| 25513 | 3.1991e-15, 3.0963e-15, 2.9967e-15, 2.9004e-15, 2.8071e-15, | |||
| 25514 | 2.7167e-15, 2.6293e-15, 2.5446e-15, 2.4626e-15, 2.3833e-15, | |||
| 25515 | 2.3064e-15, 2.232e-15, 2.16e-15, 2.0903e-15, 2.0228e-15, | |||
| 25516 | 1.9574e-15, 1.8942e-15, 1.8329e-15, 1.7736e-15, 1.7163e-15, | |||
| 25517 | 1.6607e-15, 1.6069e-15, 1.5548e-15, 1.5044e-15, 1.4557e-15, | |||
| 25518 | 1.4084e-15, 1.3627e-15, 1.3185e-15, 1.2757e-15, 1.2342e-15, | |||
| 25519 | 1.1941e-15, 1.1552e-15, 1.1177e-15, 1.0813e-15, 1.0461e-15, | |||
| 25520 | 1.012e-15, 9.79e-16, 9.4707e-16, 9.1618e-16, 8.8628e-16, | |||
| 25521 | 8.5734e-16, 8.2933e-16, 8.0223e-16, 7.76e-16, 7.5062e-16, | |||
| 25522 | 7.2606e-16, 7.0229e-16, 6.7929e-16, 6.5703e-16, 6.355e-16, | |||
| 25523 | 6.1466e-16, 5.9449e-16, 5.7498e-16, 5.561e-16, 5.3783e-16, | |||
| 25524 | 5.2015e-16, 5.0305e-16, 4.865e-16, 4.7049e-16, 4.55e-16, | |||
| 25525 | 4.4002e-16, 4.2552e-16, 4.1149e-16, 3.9792e-16, 3.8479e-16, | |||
| 25526 | 3.7209e-16, 3.5981e-16, 3.4792e-16, 3.3642e-16, 3.253e-16, | |||
| 25527 | 3.1454e-16, 3.0413e-16, 2.9406e-16, 2.8432e-16, 2.749e-16, | |||
| 25528 | 2.6579e-16, 2.5697e-16, 2.4845e-16, 2.402e-16, 2.3223e-16, | |||
| 25529 | 2.2451e-16, 2.1705e-16, 2.0984e-16, 2.0286e-16, 1.9611e-16, | |||
| 25530 | 1.8958e-16, 1.8327e-16, 1.7716e-16, 1.7126e-16, 1.6555e-16, | |||
| 25531 | 1.6003e-16, 1.5469e-16, 1.4952e-16, 1.4453e-16, 1.397e-16, | |||
| 25532 | 1.3503e-16 } }; | |||
| 25533 | ||||
| 25534 | struct s_sh2ob_ { | |||
| 25535 | double e_1[3]; | |||
| 25536 | int e_2; | |||
| 25537 | } sh2ob_ = { {-20., 2e4, 10.}, 2003 }; | |||
| 25538 | ||||
| 25539 | struct s_s260a_ { | |||
| 25540 | double e_1[2003]; | |||
| 25541 | } s260a_ = { {.1775, .17045, .16457, .17045, .1775, .20036, .21347, .22454, | |||
| 25542 | .23428, .23399, .23022, .20724, .19712, .18317, .16724, .1478, | |||
| 25543 | .12757, .11626, .10098, .089033, .07977, .067416, .059588, | |||
| 25544 | .051117, .046218, .042179, .034372, .029863, .025252, .022075, | |||
| 25545 | .019209, .015816, .013932, .011943, .010079, .0087667, .0074094, | |||
| 25546 | .0064967, .0055711, .0048444, .0042552, .0036953, .0032824, | |||
| 25547 | .0029124, .0026102, .002337, .00211, .0019008, .0017145, .0015573, | |||
| 25548 | .0014206, .0012931, .0011803, .0010774, 9.8616e-4, 9.0496e-4, | |||
| 25549 | 8.3071e-4, 7.6319e-4, 7.0149e-4, 6.4637e-4, 5.9566e-4, 5.4987e-4, | |||
| 25550 | 5.0768e-4, 4.688e-4, 4.3317e-4, 4.0037e-4, 3.7064e-4, 3.4325e-4, | |||
| 25551 | 3.1809e-4, 2.9501e-4, 2.7382e-4, 2.543e-4, 2.363e-4, 2.1977e-4, | |||
| 25552 | 2.0452e-4, 1.9042e-4, 1.774e-4, 1.6544e-4, 1.5442e-4, 1.4425e-4, | |||
| 25553 | 1.3486e-4, 1.2618e-4, 1.1817e-4, 1.1076e-4, 1.0391e-4, 9.7563e-5, | |||
| 25554 | 9.1696e-5, 8.6272e-5, 8.1253e-5, 7.6607e-5, 7.2302e-5, 6.8311e-5, | |||
| 25555 | 6.4613e-5, 6.1183e-5, 5.8001e-5, 5.5048e-5, 5.2307e-5, 4.9761e-5, | |||
| 25556 | 4.7395e-5, 4.5197e-5, 4.3155e-5, 4.1256e-5, 3.9491e-5, 3.7849e-5, | |||
| 25557 | 3.6324e-5, 3.4908e-5, 3.3594e-5, 3.2374e-5, 3.1244e-5, 3.0201e-5, | |||
| 25558 | 2.924e-5, 2.8356e-5, 2.7547e-5, 2.6814e-5, 2.6147e-5, 2.5551e-5, | |||
| 25559 | 2.5029e-5, 2.4582e-5, 2.4203e-5, 2.3891e-5, 2.3663e-5, 2.3531e-5, | |||
| 25560 | 2.3483e-5, 2.3516e-5, 2.3694e-5, 2.4032e-5, 2.4579e-5, 2.5234e-5, | |||
| 25561 | 2.6032e-5, 2.7119e-5, 2.8631e-5, 3.0848e-5, 3.3262e-5, 3.6635e-5, | |||
| 25562 | 4.0732e-5, 4.5923e-5, 5.3373e-5, 6.1875e-5, 7.2031e-5, 8.598e-5, | |||
| 25563 | 9.8642e-5, 1.1469e-4, 1.3327e-4, 1.539e-4, 1.7513e-4, 2.0665e-4, | |||
| 25564 | 2.3609e-4, 2.622e-4, 2.8677e-4, 3.259e-4, 3.8624e-4, 4.157e-4, | |||
| 25565 | 4.5207e-4, 4.9336e-4, 5.45e-4, 5.8258e-4, 5.8086e-4, 5.6977e-4, | |||
| 25566 | 5.3085e-4, 4.802e-4, 4.3915e-4, 4.0343e-4, 3.7853e-4, 3.7025e-4, | |||
| 25567 | 3.9637e-4, 4.4675e-4, 4.7072e-4, 4.9022e-4, 5.2076e-4, 5.3676e-4, | |||
| 25568 | 5.2755e-4, 4.8244e-4, 4.5473e-4, 4.3952e-4, 3.9614e-4, 3.4086e-4, | |||
| 25569 | 2.9733e-4, 2.6367e-4, 2.3767e-4, 2.0427e-4, 1.7595e-4, 1.5493e-4, | |||
| 25570 | 1.3851e-4, 1.1874e-4, 1.0735e-4, 9.049e-5, 8.1149e-5, 7.4788e-5, | |||
| 25571 | 6.5438e-5, 5.8248e-5, 4.8076e-5, 4.3488e-5, 3.7856e-5, 3.3034e-5, | |||
| 25572 | 2.9592e-5, 2.6088e-5, 2.3497e-5, 2.0279e-5, 1.7526e-5, 1.5714e-5, | |||
| 25573 | 1.3553e-5, 1.2145e-5, 1.0802e-5, 9.7681e-6, 8.8196e-6, 7.8291e-6, | |||
| 25574 | 7.1335e-6, 6.4234e-6, 5.8391e-6, 5.3532e-6, 4.9079e-6, 4.5378e-6, | |||
| 25575 | 4.1716e-6, 3.8649e-6, 3.5893e-6, 3.3406e-6, 3.1199e-6, 2.9172e-6, | |||
| 25576 | 2.7348e-6, 2.5644e-6, 2.4086e-6, 2.2664e-6, 2.1359e-6, 2.0159e-6, | |||
| 25577 | 1.9051e-6, 1.8031e-6, 1.7074e-6, 1.6185e-6, 1.5356e-6, 1.4584e-6, | |||
| 25578 | 1.3861e-6, 1.3179e-6, 1.2545e-6, 1.1951e-6, 1.1395e-6, 1.0873e-6, | |||
| 25579 | 1.0384e-6, 9.925e-7, 9.4935e-7, 9.0873e-7, 8.705e-7, 8.3446e-7, | |||
| 25580 | 8.0046e-7, 7.6834e-7, 7.38e-7, 7.0931e-7, 6.8217e-7, 6.5648e-7, | |||
| 25581 | 6.3214e-7, 6.0909e-7, 5.8725e-7, 5.6655e-7, 5.4693e-7, 5.2835e-7, | |||
| 25582 | 5.1077e-7, 4.9416e-7, 4.7853e-7, 4.6381e-7, 4.5007e-7, 4.3728e-7, | |||
| 25583 | 4.255e-7, 4.145e-7, 4.0459e-7, 3.9532e-7, 3.8662e-7, 3.7855e-7, | |||
| 25584 | 3.7041e-7, 3.6254e-7, 3.542e-7, 3.4617e-7, 3.3838e-7, 3.3212e-7, | |||
| 25585 | 3.2655e-7, 3.1865e-7, 3.1203e-7, 3.067e-7, 3.0252e-7, 2.9749e-7, | |||
| 25586 | 2.9184e-7, 2.8795e-7, 2.8501e-7, 2.8202e-7, 2.7856e-7, 2.7509e-7, | |||
| 25587 | 2.7152e-7, 2.6844e-7, 2.6642e-7, 2.6548e-7, 2.6617e-7, 2.6916e-7, | |||
| 25588 | 2.7372e-7, 2.8094e-7, 2.9236e-7, 3.1035e-7, 3.2854e-7, 3.5481e-7, | |||
| 25589 | 3.9377e-7, 4.4692e-7, 5.0761e-7, 5.7715e-7, 6.7725e-7, 8.0668e-7, | |||
| 25590 | 9.3716e-7, 1.0797e-6, 1.1689e-6, 1.3217e-6, 1.4814e-6, 1.5627e-6, | |||
| 25591 | 1.6519e-6, 1.7601e-6, 1.906e-6, 2.0474e-6, 2.0716e-6, 2.0433e-6, | |||
| 25592 | 1.9752e-6, 1.8466e-6, 1.7526e-6, 1.6657e-6, 1.587e-6, 1.5633e-6, | |||
| 25593 | 1.652e-6, 1.8471e-6, 1.9953e-6, 2.0975e-6, 2.2016e-6, 2.2542e-6, | |||
| 25594 | 2.3081e-6, 2.3209e-6, 2.2998e-6, 2.3056e-6, 2.2757e-6, 2.2685e-6, | |||
| 25595 | 2.2779e-6, 2.2348e-6, 2.2445e-6, 2.3174e-6, 2.4284e-6, 2.529e-6, | |||
| 25596 | 2.734e-6, 2.972e-6, 3.2332e-6, 3.5392e-6, 3.9013e-6, 4.3334e-6, | |||
| 25597 | 4.9088e-6, 5.3428e-6, 5.9142e-6, 6.6106e-6, 7.4709e-6, 8.5019e-6, | |||
| 25598 | 9.6835e-6, 1.0984e-5, 1.2831e-5, 1.4664e-5, 1.708e-5, 2.0103e-5, | |||
| 25599 | 2.4148e-5, 2.7948e-5, 3.2855e-5, 3.9046e-5, 4.6429e-5, 5.6633e-5, | |||
| 25600 | 6.6305e-5, 7.6048e-5, 8.7398e-5, 1.0034e-4, 1.1169e-4, 1.2813e-4, | |||
| 25601 | 1.3354e-4, 1.3952e-4, 1.4204e-4, 1.4615e-4, 1.5144e-4, 1.5475e-4, | |||
| 25602 | 1.6561e-4, 1.7135e-4, 1.6831e-4, 1.6429e-4, 1.6353e-4, 1.6543e-4, | |||
| 25603 | 1.5944e-4, 1.5404e-4, 1.5458e-4, 1.6287e-4, 1.7277e-4, 1.8387e-4, | |||
| 25604 | 1.7622e-4, 1.636e-4, 1.5273e-4, 1.3667e-4, 1.2364e-4, 9.7576e-5, | |||
| 25605 | 7.914e-5, 6.4241e-5, 5.1826e-5, 4.1415e-5, 3.1347e-5, 2.5125e-5, | |||
| 25606 | 2.0027e-5, 1.6362e-5, 1.3364e-5, 1.1117e-5, 9.4992e-6, 8.1581e-6, | |||
| 25607 | 7.1512e-6, 6.2692e-6, 5.5285e-6, 4.9e-6, 4.3447e-6, 3.8906e-6, | |||
| 25608 | 3.4679e-6, 3.1089e-6, 2.8115e-6, 2.5496e-6, 2.2982e-6, 2.0861e-6, | |||
| 25609 | 1.8763e-6, 1.7035e-6, 1.5548e-6, 1.4107e-6, 1.2839e-6, 1.1706e-6, | |||
| 25610 | 1.0709e-6, 9.8099e-7, 8.9901e-7, 8.2394e-7, 7.5567e-7, 6.9434e-7, | |||
| 25611 | 6.3867e-7, 5.8845e-7, 5.4263e-7, 5.0033e-7, 4.6181e-7, 4.2652e-7, | |||
| 25612 | 3.9437e-7, 3.6497e-7, 3.3781e-7, 3.1292e-7, 2.9011e-7, 2.6915e-7, | |||
| 25613 | 2.4989e-7, 2.3215e-7, 2.1582e-7, 2.0081e-7, 1.87e-7, 1.7432e-7, | |||
| 25614 | 1.6264e-7, 1.5191e-7, 1.4207e-7, 1.3306e-7, 1.2484e-7, 1.1737e-7, | |||
| 25615 | 1.1056e-7, 1.0451e-7, 9.906e-8, 9.4135e-8, 8.9608e-8, 8.5697e-8, | |||
| 25616 | 8.1945e-8, 7.8308e-8, 7.4808e-8, 7.1686e-8, 6.8923e-8, 6.5869e-8, | |||
| 25617 | 6.3308e-8, 6.084e-8, 5.8676e-8, 5.6744e-8, 5.5016e-8, 5.3813e-8, | |||
| 25618 | 5.2792e-8, 5.2097e-8, 5.1737e-8, 5.1603e-8, 5.1656e-8, 5.1989e-8, | |||
| 25619 | 5.2467e-8, 5.2918e-8, 5.3589e-8, 5.456e-8, 5.5869e-8, 5.7403e-8, | |||
| 25620 | 5.8968e-8, 6.0973e-8, 6.3432e-8, 6.6245e-8, 6.9353e-8, 7.2686e-8, | |||
| 25621 | 7.6541e-8, 8.0991e-8, 8.595e-8, 9.1429e-8, 9.7851e-8, 1.0516e-7, | |||
| 25622 | 1.1349e-7, 1.2295e-7, 1.3335e-7, 1.4488e-7, 1.5864e-7, 1.7412e-7, | |||
| 25623 | 1.914e-7, 2.1078e-7, 2.3369e-7, 2.5996e-7, 2.8848e-7, 3.2169e-7, | |||
| 25624 | 3.5991e-7, 4.0566e-7, 4.5969e-7, 5.3094e-7, 6.1458e-7, 7.1155e-7, | |||
| 25625 | 8.3045e-7, 9.9021e-7, 1.2042e-6, 1.4914e-6, 1.8145e-6, 2.221e-6, | |||
| 25626 | 2.7831e-6, 3.4533e-6, 4.4446e-6, 5.1989e-6, 6.2289e-6, 7.1167e-6, | |||
| 25627 | 8.3949e-6, 9.6417e-6, 1.0313e-5, 1.0485e-5, 1.0641e-5, 1.0898e-5, | |||
| 25628 | 1.0763e-5, 1.0506e-5, 1.0497e-5, 1.1696e-5, 1.2654e-5, 1.3029e-5, | |||
| 25629 | 1.3175e-5, 1.4264e-5, 1.4985e-5, 1.4999e-5, 1.4317e-5, 1.4616e-5, | |||
| 25630 | 1.4963e-5, 1.5208e-5, 1.4942e-5, 1.3879e-5, 1.3087e-5, 1.1727e-5, | |||
| 25631 | 1.0515e-5, 9.0073e-6, 7.3133e-6, 6.1181e-6, 5.0623e-6, 4.1105e-6, | |||
| 25632 | 3.3915e-6, 2.6711e-6, 2.1464e-6, 1.7335e-6, 1.4302e-6, 1.1847e-6, | |||
| 25633 | 9.9434e-7, 8.2689e-7, 7.0589e-7, 6.075e-7, 5.3176e-7, 4.6936e-7, | |||
| 25634 | 4.1541e-7, 3.6625e-7, 3.2509e-7, 2.9156e-7, 2.6308e-7, 2.3819e-7, | |||
| 25635 | 2.1421e-7, 1.9366e-7, 1.7626e-7, 1.5982e-7, 1.4567e-7, 1.3354e-7, | |||
| 25636 | 1.2097e-7, 1.1029e-7, 1.0063e-7, 9.2003e-8, 8.4245e-8, 7.7004e-8, | |||
| 25637 | 7.0636e-8, 6.4923e-8, 5.9503e-8, 5.4742e-8, 5.045e-8, 4.647e-8, | |||
| 25638 | 4.2881e-8, 3.955e-8, 3.6541e-8, 3.3803e-8, 3.1279e-8, 2.8955e-8, | |||
| 25639 | 2.6858e-8, 2.4905e-8, 2.3146e-8, 2.1539e-8, 2.0079e-8, 1.8746e-8, | |||
| 25640 | 1.7517e-8, 1.6396e-8, 1.5369e-8, 1.4426e-8, 1.3543e-8, 1.2724e-8, | |||
| 25641 | 1.1965e-8, 1.1267e-8, 1.0617e-8, 1.001e-8, 9.4662e-9, 8.9553e-9, | |||
| 25642 | 8.4988e-9, 8.0807e-9, 7.7043e-9, 7.3721e-9, 7.0707e-9, 6.8047e-9, | |||
| 25643 | 6.5702e-9, 6.3634e-9, 6.1817e-9, 6.0239e-9, 5.8922e-9, 5.7824e-9, | |||
| 25644 | 5.7019e-9, 5.6368e-9, 5.594e-9, 5.5669e-9, 5.5583e-9, 5.5653e-9, | |||
| 25645 | 5.5837e-9, 5.6243e-9, 5.6883e-9, 5.78e-9, 5.8964e-9, 6.0429e-9, | |||
| 25646 | 6.2211e-9, 6.4282e-9, 6.6634e-9, 6.9306e-9, 7.2336e-9, 7.5739e-9, | |||
| 25647 | 7.9562e-9, 8.3779e-9, 8.8575e-9, 9.3992e-9, 1.0004e-8, 1.0684e-8, | |||
| 25648 | 1.145e-8, 1.232e-8, 1.3311e-8, 1.4455e-8, 1.5758e-8, 1.7254e-8, | |||
| 25649 | 1.8927e-8, 2.093e-8, 2.3348e-8, 2.6074e-8, 2.9221e-8, 3.277e-8, | |||
| 25650 | 3.7485e-8, 4.2569e-8, 4.8981e-8, 5.5606e-8, 6.2393e-8, 7.1901e-8, | |||
| 25651 | 8.2921e-8, 9.5513e-8, 1.1111e-7, 1.3143e-7, 1.5971e-7, 1.8927e-7, | |||
| 25652 | 2.2643e-7, 2.786e-7, 3.2591e-7, 3.7024e-7, 4.2059e-7, 4.9432e-7, | |||
| 25653 | 5.5543e-7, 5.7498e-7, 5.921e-7, 6.1005e-7, 6.1577e-7, 5.9193e-7, | |||
| 25654 | 5.6602e-7, 5.7403e-7, 6.005e-7, 6.4723e-7, 6.7073e-7, 7.5415e-7, | |||
| 25655 | 8.0982e-7, 8.7658e-7, 9.143e-7, 9.4459e-7, 9.8347e-7, 9.8768e-7, | |||
| 25656 | 1.0153e-6, 1.0066e-6, 1.0353e-6, 1.0353e-6, 1.0722e-6, 1.1138e-6, | |||
| 25657 | 1.1923e-6, 1.2947e-6, 1.4431e-6, 1.6537e-6, 1.8662e-6, 2.2473e-6, | |||
| 25658 | 2.6464e-6, 3.1041e-6, 3.4858e-6, 4.0167e-6, 4.6675e-6, 5.0983e-6, | |||
| 25659 | 5.7997e-6, 6.0503e-6, 6.4687e-6, 6.5396e-6, 6.7986e-6, 7.0244e-6, | |||
| 25660 | 7.2305e-6, 7.6732e-6, 7.9783e-6, 7.9846e-6, 7.7617e-6, 7.7657e-6, | |||
| 25661 | 7.7411e-6, 7.8816e-6, 7.8136e-6, 8.0051e-6, 8.5799e-6, 9.1659e-6, | |||
| 25662 | 9.8646e-6, 9.492e-6, 8.767e-6, 8.2034e-6, 7.2297e-6, 6.2324e-6, | |||
| 25663 | 4.9315e-6, 3.9128e-6, 3.1517e-6, 2.4469e-6, 1.8815e-6, 1.4627e-6, | |||
| 25664 | 1.1698e-6, 9.4686e-7, 7.8486e-7, 6.697e-7, 5.8811e-7, 5.2198e-7, | |||
| 25665 | 4.6809e-7, 4.1671e-7, 3.7006e-7, 3.3066e-7, 2.9387e-7, 2.6415e-7, | |||
| 25666 | 2.3409e-7, 2.0991e-7, 1.9132e-7, 1.7519e-7, 1.5939e-7, 1.4368e-7, | |||
| 25667 | 1.305e-7, 1.1883e-7, 1.0772e-7, 9.6884e-8, 8.7888e-8, 7.8956e-8, | |||
| 25668 | 7.1024e-8, 6.3824e-8, 5.7256e-8, 5.1769e-8, 4.7037e-8, 4.2901e-8, | |||
| 25669 | 3.897e-8, 3.5467e-8, 3.2502e-8, 2.9827e-8, 2.7389e-8, 2.5111e-8, | |||
| 25670 | 2.3056e-8, 2.1267e-8, 1.961e-8, 1.8133e-8, 1.6775e-8, 1.5491e-8, | |||
| 25671 | 1.4329e-8, 1.3265e-8, 1.23e-8, 1.142e-8, 1.0593e-8, 9.8475e-9, | |||
| 25672 | 9.1585e-9, 8.5256e-9, 7.9525e-9, 7.4226e-9, 6.9379e-9, 6.495e-9, | |||
| 25673 | 6.0911e-9, 5.7242e-9, 5.3877e-9, 5.0821e-9, 4.8051e-9, 4.5554e-9, | |||
| 25674 | 4.3315e-9, 4.1336e-9, 3.9632e-9, 3.8185e-9, 3.708e-9, 3.6296e-9, | |||
| 25675 | 3.5804e-9, 3.5776e-9, 3.6253e-9, 3.7115e-9, 3.8151e-9, 3.9804e-9, | |||
| 25676 | 4.1742e-9, 4.3581e-9, 4.5306e-9, 4.7736e-9, 5.1297e-9, 5.5291e-9, | |||
| 25677 | 5.9125e-9, 6.4956e-9, 7.0362e-9, 7.5318e-9, 7.9947e-9, 8.6438e-9, | |||
| 25678 | 9.7227e-9, 1.013e-8, 1.0549e-8, 1.1064e-8, 1.1702e-8, 1.2043e-8, | |||
| 25679 | 1.1781e-8, 1.1838e-8, 1.1917e-8, 1.2131e-8, 1.2476e-8, 1.3611e-8, | |||
| 25680 | 1.436e-8, 1.5057e-8, 1.6247e-8, 1.7284e-8, 1.842e-8, 1.8352e-8, | |||
| 25681 | 1.8722e-8, 1.9112e-8, 1.9092e-8, 1.9311e-8, 1.9411e-8, 1.9884e-8, | |||
| 25682 | 2.0508e-8, 2.151e-8, 2.3143e-8, 2.505e-8, 2.7596e-8, 3.1231e-8, | |||
| 25683 | 3.626e-8, 4.341e-8, 5.224e-8, 6.3236e-8, 7.7522e-8, 9.8688e-8, | |||
| 25684 | 1.1859e-7, 1.4341e-7, 1.6798e-7, 1.9825e-7, 2.2898e-7, 2.6257e-7, | |||
| 25685 | 2.9884e-7, 3.3247e-7, 3.4936e-7, 3.5583e-7, 3.715e-7, 3.658e-7, | |||
| 25686 | 3.7124e-7, 3.703e-7, 4.1536e-7, 4.6656e-7, 4.6677e-7, 4.7507e-7, | |||
| 25687 | 4.9653e-7, 5.3795e-7, 5.4957e-7, 5.2238e-7, 5.469e-7, 5.6569e-7, | |||
| 25688 | 5.9844e-7, 5.9835e-7, 5.6522e-7, 5.4123e-7, 4.7904e-7, 4.2851e-7, | |||
| 25689 | 3.5603e-7, 2.8932e-7, 2.3655e-7, 1.8592e-7, 1.4943e-7, 1.1971e-7, | |||
| 25690 | 9.8482e-8, 8.3675e-8, 7.127e-8, 6.2496e-8, 5.4999e-8, 4.9821e-8, | |||
| 25691 | 4.5387e-8, 4.134e-8, 3.7453e-8, 3.3298e-8, 3.012e-8, 2.7032e-8, | |||
| 25692 | 2.4236e-8, 2.15e-8, 1.8988e-8, 1.7414e-8, 1.5706e-8, 1.4192e-8, | |||
| 25693 | 1.3204e-8, 1.1759e-8, 1.0737e-8, 9.6309e-9, 8.8179e-9, 8.2619e-9, | |||
| 25694 | 7.2264e-9, 6.4856e-9, 5.8037e-9, 5.2093e-9, 4.7205e-9, 4.1749e-9, | |||
| 25695 | 3.7852e-9, 3.3915e-9, 3.0089e-9, 2.7335e-9, 2.4398e-9, 2.2031e-9, | |||
| 25696 | 1.9786e-9, 1.789e-9, 1.6266e-9, 1.483e-9, 1.3576e-9, 1.2518e-9, | |||
| 25697 | 1.1587e-9, 1.0726e-9, 9.9106e-10, 9.1673e-10, 8.5084e-10, | |||
| 25698 | 7.9147e-10, 7.2882e-10, 6.7342e-10, 6.2593e-10, 5.8294e-10, | |||
| 25699 | 5.4435e-10, 5.0997e-10, 4.7806e-10, 4.4931e-10, 4.2357e-10, | |||
| 25700 | 4.0023e-10, 3.7909e-10, 3.5999e-10, 3.4285e-10, 3.2776e-10, | |||
| 25701 | 3.1468e-10, 3.0377e-10, 2.9479e-10, 2.8877e-10, 2.8512e-10, | |||
| 25702 | 2.8617e-10, 2.8976e-10, 3.0001e-10, 3.1718e-10, 3.3898e-10, | |||
| 25703 | 3.5857e-10, 3.8358e-10, 4.3131e-10, 4.5741e-10, 4.6948e-10, | |||
| 25704 | 4.7594e-10, 4.9529e-10, 5.1563e-10, 4.9475e-10, 4.8369e-10, | |||
| 25705 | 4.8829e-10, 5.0047e-10, 5.0203e-10, 5.1954e-10, 5.5352e-10, | |||
| 25706 | 5.9928e-10, 6.7148e-10, 7.1121e-10, 7.4317e-10, 7.6039e-10, | |||
| 25707 | 7.8313e-10, 8.0684e-10, 7.8553e-10, 7.8312e-10, 7.8537e-10, | |||
| 25708 | 7.8872e-10, 8.0185e-10, 8.1004e-10, 8.2608e-10, 8.2525e-10, | |||
| 25709 | 8.3857e-10, 8.792e-10, 9.2451e-10, 9.8661e-10, 1.0629e-9, | |||
| 25710 | 1.1659e-9, 1.2922e-9, 1.4387e-9, 1.6254e-9, 1.8425e-9, 2.1428e-9, | |||
| 25711 | 2.5477e-9, 3.0379e-9, 3.757e-9, 4.4354e-9, 5.1802e-9, 6.2769e-9, | |||
| 25712 | 7.4894e-9, 8.7474e-9, 9.8037e-9, 1.1582e-8, 1.3293e-8, 1.4471e-8, | |||
| 25713 | 1.5025e-8, 1.558e-8, 1.6228e-8, 1.6413e-8, 1.602e-8, 1.6393e-8, | |||
| 25714 | 1.7545e-8, 1.959e-8, 2.1449e-8, 2.3856e-8, 2.705e-8, 3.0214e-8, | |||
| 25715 | 3.3733e-8, 3.6487e-8, 3.9353e-8, 4.266e-8, 4.6385e-8, 4.9955e-8, | |||
| 25716 | 5.5313e-8, 6.0923e-8, 6.8948e-8, 7.3649e-8, 8.2602e-8, 9.2212e-8, | |||
| 25717 | 9.908e-8, 1.1319e-7, 1.179e-7, 1.2941e-7, 1.3199e-7, 1.3914e-7, | |||
| 25718 | 1.4843e-7, 1.53e-7, 1.6419e-7, 1.7095e-7, 1.6988e-7, 1.6494e-7, | |||
| 25719 | 1.6327e-7, 1.6067e-7, 1.6909e-7, 1.7118e-7, 1.8106e-7, 1.9857e-7, | |||
| 25720 | 2.1696e-7, 2.3385e-7, 2.2776e-7, 2.1402e-7, 1.9882e-7, 1.7362e-7, | |||
| 25721 | 1.4308e-7, 1.1158e-7, 8.8781e-8, 6.8689e-8, 5.2062e-8, 4.0427e-8, | |||
| 25722 | 3.2669e-8, 2.7354e-8, 2.32e-8, 2.058e-8, 1.8676e-8, 1.7329e-8, | |||
| 25723 | 1.6621e-8, 1.6433e-8, 1.6953e-8, 1.7134e-8, 1.7948e-8, 1.9107e-8, | |||
| 25724 | 1.9875e-8, 2.1416e-8, 2.1556e-8, 2.2265e-8, 2.2171e-8, 2.2534e-8, | |||
| 25725 | 2.3029e-8, 2.2828e-8, 2.3143e-8, 2.2965e-8, 2.2223e-8, 2.1108e-8, | |||
| 25726 | 2.0265e-8, 1.9516e-8, 1.9941e-8, 2.0312e-8, 2.108e-8, 2.2611e-8, | |||
| 25727 | 2.421e-8, 2.6069e-8, 2.5097e-8, 2.3318e-8, 2.1543e-8, 1.8942e-8, | |||
| 25728 | 1.596e-8, 1.2386e-8, 9.934e-9, 7.7502e-9, 5.9462e-9, 4.5113e-9, | |||
| 25729 | 3.5523e-9, 2.8844e-9, 2.3394e-9, 1.9584e-9, 1.6749e-9, 1.4624e-9, | |||
| 25730 | 1.2809e-9, 1.1359e-9, 1.0087e-9, 9.0166e-10, 8.1079e-10, | |||
| 25731 | 7.2219e-10, 6.4922e-10, 5.8803e-10, 5.329e-10, 4.859e-10, | |||
| 25732 | 4.4111e-10, 4.0184e-10, 3.6644e-10, 3.3529e-10, 3.0789e-10, | |||
| 25733 | 2.8286e-10, 2.6089e-10, 2.4125e-10, 2.2355e-10, 2.0783e-10, | |||
| 25734 | 1.937e-10, 1.8088e-10, 1.6948e-10, 1.5929e-10, 1.5013e-10, | |||
| 25735 | 1.4193e-10, 1.347e-10, 1.2841e-10, 1.2307e-10, 1.1865e-10, | |||
| 25736 | 1.1502e-10, 1.1243e-10, 1.1099e-10, 1.1066e-10, 1.1216e-10, | |||
| 25737 | 1.1529e-10, 1.2171e-10, 1.3128e-10, 1.4153e-10, 1.5962e-10, | |||
| 25738 | 1.8048e-10, 2.0936e-10, 2.3165e-10, 2.5746e-10, 2.96e-10, | |||
| 25739 | 3.3707e-10, 3.5267e-10, 3.5953e-10, 3.6822e-10, 3.8363e-10, | |||
| 25740 | 3.8286e-10, 3.5883e-10, 3.6154e-10, 3.6653e-10, 3.8507e-10, | |||
| 25741 | 4.025e-10, 4.4435e-10, 4.9889e-10, 5.6932e-10, 6.3599e-10, | |||
| 25742 | 7.0281e-10, 7.5777e-10, 8.1279e-10, 8.891e-10, 9.34e-10, | |||
| 25743 | 1.0076e-9, 1.0945e-9, 1.1898e-9, 1.3108e-9, 1.4725e-9, 1.7028e-9, | |||
| 25744 | 1.9619e-9, 2.3527e-9, 2.6488e-9, 3.0327e-9, 3.4396e-9, 3.8797e-9, | |||
| 25745 | 4.4115e-9, 4.6853e-9, 4.9553e-9, 4.9551e-9, 5.1062e-9, 5.0996e-9, | |||
| 25746 | 5.1119e-9, 5.2283e-9, 5.8297e-9, 6.3439e-9, 6.2675e-9, 6.3296e-9, | |||
| 25747 | 6.5173e-9, 7.1685e-9, 7.0528e-9, 6.8856e-9, 7.3182e-9, 7.699e-9, | |||
| 25748 | 8.3461e-9, 8.1946e-9, 7.7153e-9, 7.2411e-9, 6.4511e-9, 5.7336e-9, | |||
| 25749 | 4.6105e-9, 3.6962e-9, 2.9944e-9, 2.4317e-9, 1.9399e-9, 1.5331e-9, | |||
| 25750 | 1.2633e-9, 1.0613e-9, 9.0136e-10, 7.9313e-10, 7.1543e-10, | |||
| 25751 | 6.6485e-10, 6.4225e-10, 6.398e-10, 6.4598e-10, 6.7428e-10, | |||
| 25752 | 7.027e-10, 7.4694e-10, 7.7946e-10, 7.9395e-10, 7.8716e-10, | |||
| 25753 | 7.6933e-10, 7.622e-10, 7.4825e-10, 7.4805e-10, 7.6511e-10, | |||
| 25754 | 7.6492e-10, 7.4103e-10, 7.1979e-10, 7.1686e-10, 7.3403e-10, | |||
| 25755 | 7.1142e-10, 7.0212e-10, 7.1548e-10, 7.5253e-10, 8.0444e-10, | |||
| 25756 | 8.2378e-10, 7.8004e-10, 7.1712e-10, 6.4978e-10, 5.7573e-10, | |||
| 25757 | 4.8675e-10, 3.7945e-10, 3.0118e-10, 2.4241e-10, 1.91e-10, | |||
| 25758 | 1.4816e-10, 1.1567e-10, 9.4183e-11, 7.766e-11, 6.527e-11, | |||
| 25759 | 5.6616e-11, 4.9576e-11, 4.4137e-11, 3.9459e-11, 3.5759e-11, | |||
| 25760 | 3.2478e-11, 2.9419e-11, 2.6703e-11, 2.4365e-11, 2.2412e-11, | |||
| 25761 | 2.0606e-11, 1.9067e-11, 1.78e-11, 1.6695e-11, 1.5729e-11, | |||
| 25762 | 1.4887e-11, 1.4135e-11, 1.3519e-11, 1.2992e-11, 1.2563e-11, | |||
| 25763 | 1.2223e-11, 1.1962e-11, 1.1775e-11, 1.1657e-11, 1.1605e-11, | |||
| 25764 | 1.1619e-11, 1.1697e-11, 1.1839e-11, 1.2046e-11, 1.2319e-11, | |||
| 25765 | 1.2659e-11, 1.307e-11, 1.3553e-11, 1.4113e-11, 1.4754e-11, | |||
| 25766 | 1.548e-11, 1.6298e-11, 1.7214e-11, 1.8236e-11, 1.9372e-11, | |||
| 25767 | 2.0635e-11, 2.2036e-11, 2.359e-11, 2.5317e-11, 2.7242e-11, | |||
| 25768 | 2.94e-11, 3.1849e-11, 3.4654e-11, 3.7923e-11, 4.1695e-11, | |||
| 25769 | 4.6055e-11, 5.094e-11, 5.5624e-11, 6.0667e-11, 6.6261e-11, | |||
| 25770 | 7.2692e-11, 7.9711e-11, 8.7976e-11, 9.6884e-11, 1.0775e-10, | |||
| 25771 | 1.2093e-10, 1.3531e-10, 1.5404e-10, 1.7315e-10, 1.9862e-10, | |||
| 25772 | 2.3341e-10, 2.7014e-10, 3.1716e-10, 3.6957e-10, 4.3233e-10, | |||
| 25773 | 5.2566e-10, 6.2251e-10, 7.2149e-10, 8.3958e-10, 9.5931e-10, | |||
| 25774 | 1.1388e-9, 1.2973e-9, 1.4442e-9, 1.5638e-9, 1.6974e-9, 1.8489e-9, | |||
| 25775 | 1.983e-9, 2.172e-9, 2.3662e-9, 2.6987e-9, 3.1697e-9, 3.6907e-9, | |||
| 25776 | 4.2625e-9, 4.7946e-9, 5.3848e-9, 6.0897e-9, 6.473e-9, 7.1483e-9, | |||
| 25777 | 7.7432e-9, 8.0851e-9, 8.5013e-9, 8.5909e-9, 9.189e-9, 9.3124e-9, | |||
| 25778 | 9.5936e-9, 9.8787e-9, 9.9036e-9, 9.6712e-9, 9.2036e-9, 9.0466e-9, | |||
| 25779 | 8.938e-9, 9.1815e-9, 9.5092e-9, 1.0027e-8, 1.0876e-8, 1.1744e-8, | |||
| 25780 | 1.1853e-8, 1.1296e-8, 1.0134e-8, 8.8245e-9, 7.393e-9, 5.715e-9, | |||
| 25781 | 4.4884e-9, 3.4027e-9, 2.6054e-9, 2.079e-9, 1.7267e-9, 1.4724e-9, | |||
| 25782 | 1.2722e-9, 1.1234e-9, 1.0186e-9, 9.468e-10, 8.8854e-10, | |||
| 25783 | 8.5127e-10, 8.3157e-10, 8.2226e-10, 8.3395e-10, 8.3294e-10, | |||
| 25784 | 8.4725e-10, 8.8814e-10, 9.3697e-10, 1.0112e-9, 1.0412e-9, | |||
| 25785 | 1.0948e-9, 1.181e-9, 1.2267e-9, 1.369e-9, 1.4512e-9, 1.5568e-9, | |||
| 25786 | 1.6552e-9, 1.7321e-9, 1.8797e-9, 1.921e-9, 1.9686e-9, 1.9917e-9, | |||
| 25787 | 1.9357e-9, 1.8486e-9, 1.7575e-9, 1.7113e-9, 1.7163e-9, 1.7623e-9, | |||
| 25788 | 1.8536e-9, 1.9765e-9, 2.1334e-9, 2.3237e-9, 2.3259e-9, 2.1833e-9, | |||
| 25789 | 1.9785e-9, 1.7308e-9, 1.4596e-9, 1.1198e-9, 8.7375e-10, | |||
| 25790 | 6.5381e-10, 4.8677e-10, 3.6756e-10, 2.9155e-10, 2.3735e-10, | |||
| 25791 | 1.959e-10, 1.6638e-10, 1.4549e-10, 1.2947e-10, 1.1511e-10, | |||
| 25792 | 1.0548e-10, 9.6511e-11, 9.0469e-11, 8.517e-11, 7.7804e-11, | |||
| 25793 | 7.1971e-11, 6.6213e-11, 6.1063e-11, 5.5881e-11, 5.0508e-11, | |||
| 25794 | 4.5932e-11, 4.1997e-11, 3.7672e-11, 3.3972e-11, 3.0318e-11, | |||
| 25795 | 2.6769e-11, 2.3874e-11, 2.1336e-11, 1.9073e-11, 1.7313e-11, | |||
| 25796 | 1.5904e-11, 1.4684e-11, 1.3698e-11, 1.2873e-11, 1.2175e-11, | |||
| 25797 | 1.1542e-11, 1.1024e-11, 1.0602e-11, 1.0267e-11, 1.0012e-11, | |||
| 25798 | 9.8379e-12, 9.7482e-12, 9.7564e-12, 9.8613e-12, 1.0092e-11, | |||
| 25799 | 1.0418e-11, 1.0868e-11, 1.1585e-11, 1.2351e-11, 1.3372e-11, | |||
| 25800 | 1.4841e-11, 1.6457e-11, 1.8681e-11, 2.055e-11, 2.2912e-11, | |||
| 25801 | 2.5958e-11, 2.9137e-11, 3.2368e-11, 3.4848e-11, 3.8462e-11, | |||
| 25802 | 4.219e-11, 4.5629e-11, 4.9022e-11, 5.4232e-11, 6.19e-11, | |||
| 25803 | 7.1953e-11, 8.5368e-11, 9.9699e-11, 1.1734e-10, 1.4185e-10, | |||
| 25804 | 1.7017e-10, 1.9813e-10, 2.3859e-10, 2.7304e-10, 3.0971e-10, | |||
| 25805 | 3.5129e-10, 3.9405e-10, 4.5194e-10, 4.8932e-10, 5.2436e-10, | |||
| 25806 | 5.4098e-10, 5.5542e-10, 5.7794e-10, 5.6992e-10, 5.879e-10, | |||
| 25807 | 6.1526e-10, 6.8034e-10, 6.7956e-10, 6.6864e-10, 6.9329e-10, | |||
| 25808 | 7.2971e-10, 7.6546e-10, 7.5078e-10, 7.8406e-10, 8.3896e-10, | |||
| 25809 | 9.0111e-10, 9.1994e-10, 8.7189e-10, 8.1426e-10, 7.3097e-10, | |||
| 25810 | 6.3357e-10, 5.1371e-10, 4.0936e-10, 3.2918e-10, 2.6255e-10, | |||
| 25811 | 2.0724e-10, 1.6879e-10, 1.4165e-10, 1.1989e-10, 1.0125e-10, | |||
| 25812 | 8.9629e-11, 7.8458e-11, 6.8826e-11, 6.0935e-11, 5.5208e-11, | |||
| 25813 | 5.2262e-11, 5.026e-11, 4.8457e-11, 4.7888e-11, 4.8032e-11, | |||
| 25814 | 5.0838e-11, 5.4668e-11, 5.579e-11, 6.0056e-11, 6.3811e-11, | |||
| 25815 | 6.8848e-11, 7.459e-11, 7.8249e-11, 8.3371e-11, 8.3641e-11, | |||
| 25816 | 8.6591e-11, 8.9599e-11, 9.3487e-11, 1.0066e-10, 1.0765e-10, | |||
| 25817 | 1.0851e-10, 1.0619e-10, 1.0557e-10, 1.046e-10, 1.0796e-10, | |||
| 25818 | 1.0523e-10, 1.0674e-10, 1.1261e-10, 1.1431e-10, 1.1408e-10, | |||
| 25819 | 1.0901e-10, 9.9105e-11, 8.8077e-11, 6.9928e-11, 5.4595e-11, | |||
| 25820 | 4.5401e-11, 3.6313e-11, 2.6986e-11, 1.9463e-11, 1.4577e-11, | |||
| 25821 | 1.1583e-11, 9.5492e-12, 8.077e-12, 6.9642e-12, 6.0966e-12, | |||
| 25822 | 5.4046e-12, 4.8431e-12, 4.3815e-12, 3.9987e-12, 3.679e-12, | |||
| 25823 | 3.4113e-12, 3.1868e-12, 2.9992e-12, 2.8434e-12, 2.7153e-12, | |||
| 25824 | 2.612e-12, 2.5311e-12, 2.4705e-12, 2.429e-12, 2.4053e-12, | |||
| 25825 | 2.3988e-12, 2.4087e-12, 2.4349e-12, 2.4771e-12, 2.5355e-12, | |||
| 25826 | 2.6103e-12, 2.7019e-12, 2.811e-12, 2.9383e-12, 3.0848e-12, | |||
| 25827 | 3.2518e-12, 3.4405e-12, 3.6527e-12, 3.8902e-12, 4.1555e-12, | |||
| 25828 | 4.451e-12, 4.7801e-12, 5.1462e-12, 5.5539e-12, 6.0086e-12, | |||
| 25829 | 6.5171e-12, 7.0884e-12, 7.7357e-12, 8.4831e-12, 9.3096e-12, | |||
| 25830 | 1.0282e-11, 1.1407e-11, 1.269e-11, 1.4148e-11, 1.5888e-11, | |||
| 25831 | 1.7992e-11, 2.0523e-11, 2.3342e-11, 2.6578e-11, 3.0909e-11, | |||
| 25832 | 3.6228e-11, 4.2053e-11, 4.9059e-11, 5.9273e-11, 7.0166e-11, | |||
| 25833 | 8.2298e-11, 9.7071e-11, 1.1673e-10, 1.401e-10, 1.6621e-10, | |||
| 25834 | 2.0127e-10, 2.3586e-10, 2.705e-10, 3.095e-10, 3.6584e-10, | |||
| 25835 | 4.1278e-10, 4.6591e-10, 5.222e-10, 5.5246e-10, 6.15e-10, | |||
| 25836 | 6.5878e-10, 7.1167e-10, 7.9372e-10, 8.6975e-10, 9.6459e-10, | |||
| 25837 | 9.7368e-10, 9.8142e-10, 1.0202e-9, 1.02e-9, 1.0356e-9, 1.0092e-9, | |||
| 25838 | 1.0269e-9, 1.0366e-9, 1.049e-9, 1.0717e-9, 1.0792e-9, 1.1016e-9, | |||
| 25839 | 1.0849e-9, 1.0929e-9, 1.0971e-9, 1.0969e-9, 1.046e-9, 9.2026e-10, | |||
| 25840 | 8.1113e-10, 6.8635e-10, 5.5369e-10, 4.2908e-10, 3.3384e-10, | |||
| 25841 | 2.648e-10, 2.081e-10, 1.6915e-10, 1.4051e-10, 1.1867e-10, | |||
| 25842 | 1.0158e-10, 8.899e-11, 7.9175e-11, 7.044e-11, 6.3453e-11, | |||
| 25843 | 5.7009e-11, 5.1662e-11, 4.7219e-11, 4.3454e-11, 4.0229e-11, | |||
| 25844 | 3.7689e-11, 3.6567e-11, 3.5865e-11, 3.5955e-11, 3.5928e-11, | |||
| 25845 | 3.6298e-11, 3.7629e-11, 3.93e-11, 4.1829e-11, 4.4806e-11, | |||
| 25846 | 5.0534e-11, 5.6672e-11, 6.2138e-11, 6.8678e-11, 7.6111e-11, | |||
| 25847 | 8.4591e-11, 9.2634e-11, 9.8085e-11, 1.083e-10, 1.1949e-10, | |||
| 25848 | 1.2511e-10, 1.3394e-10, 1.3505e-10, 1.4342e-10, 1.4874e-10, | |||
| 25849 | 1.492e-10, 1.5872e-10, 1.5972e-10, 1.5821e-10, 1.5425e-10, | |||
| 25850 | 1.4937e-10, 1.5089e-10, 1.5521e-10, 1.6325e-10, 1.6924e-10, | |||
| 25851 | 1.8265e-10, 1.9612e-10, 2.0176e-10, 1.9359e-10, 1.7085e-10, | |||
| 25852 | 1.5197e-10, 1.2646e-10, 9.8552e-11, 7.453e-11, 5.5052e-11, | |||
| 25853 | 4.2315e-11, 3.2736e-11, 2.6171e-11, 2.1909e-11, 1.8286e-11, | |||
| 25854 | 1.5752e-11, 1.3859e-11, 1.2288e-11, 1.1002e-11, 9.7534e-12, | |||
| 25855 | 8.8412e-12, 8.0169e-12, 7.2855e-12, 6.8734e-12, 6.4121e-12, | |||
| 25856 | 6.1471e-12, 5.778e-12, 5.3478e-12, 4.9652e-12, 4.4043e-12, | |||
| 25857 | 3.9862e-12, 3.4684e-12, 2.9681e-12, 2.5791e-12, 2.2339e-12, | |||
| 25858 | 1.9247e-12, 1.6849e-12, 1.4863e-12, 1.3291e-12, 1.2021e-12, | |||
| 25859 | 1.0947e-12, 1.0015e-12, 9.1935e-13, 8.4612e-13, 7.8036e-13, | |||
| 25860 | 7.21e-13, 6.6718e-13, 6.1821e-13, 5.7353e-13, 5.3269e-13, | |||
| 25861 | 4.9526e-13, 4.6093e-13, 4.2937e-13, 4.0034e-13, 3.7361e-13, | |||
| 25862 | 3.4895e-13, 3.2621e-13, 3.052e-13, 2.8578e-13, 2.6782e-13, | |||
| 25863 | 2.512e-13, 2.3581e-13, 2.2154e-13, 2.0832e-13, 1.9605e-13, | |||
| 25864 | 1.8466e-13, 1.7408e-13, 1.6425e-13, 1.5511e-13, 1.4661e-13, | |||
| 25865 | 1.3869e-13, 1.3131e-13, 1.2444e-13, 1.1803e-13, 1.1205e-13, | |||
| 25866 | 1.0646e-13, 1.0124e-13, 9.6358e-14, 9.1789e-14, 8.7509e-14, | |||
| 25867 | 8.3498e-14, 7.9735e-14, 7.6202e-14, 7.2882e-14, 6.976e-14, | |||
| 25868 | 6.6822e-14, 6.4053e-14, 6.1442e-14, 5.8978e-14, 5.665e-14, | |||
| 25869 | 5.4448e-14, 5.2364e-14, 5.0389e-14, 4.8516e-14, 4.6738e-14, | |||
| 25870 | 4.5048e-14, 4.3441e-14, 4.1911e-14, 4.0453e-14, 3.9063e-14, | |||
| 25871 | 3.7735e-14, 3.6467e-14, 3.5254e-14, 3.4093e-14, 3.298e-14, | |||
| 25872 | 3.1914e-14, 3.0891e-14, 2.9909e-14, 2.8965e-14, 2.8058e-14, | |||
| 25873 | 2.7185e-14, 2.6344e-14, 2.5535e-14, 2.4755e-14, 2.4002e-14, | |||
| 25874 | 2.3276e-14, 2.2576e-14, 2.1899e-14, 2.1245e-14, 2.0613e-14, | |||
| 25875 | 2.0002e-14, 1.9411e-14, 1.8839e-14, 1.8285e-14, 1.7749e-14, | |||
| 25876 | 1.723e-14, 1.6727e-14, 1.624e-14, 1.5768e-14, 1.531e-14, | |||
| 25877 | 1.4867e-14, 1.4436e-14, 1.4019e-14, 1.3614e-14, 1.3221e-14, | |||
| 25878 | 1.284e-14, 1.2471e-14, 1.2112e-14, 1.1764e-14, 1.1425e-14, | |||
| 25879 | 1.1097e-14, 1.0779e-14, 1.0469e-14, 1.0169e-14, 9.8775e-15, | |||
| 25880 | 9.5943e-15, 9.3193e-15, 9.0522e-15, 8.7928e-15, 8.5409e-15, | |||
| 25881 | 8.2962e-15, 8.0586e-15, 7.8278e-15, 7.6036e-15, 7.3858e-15, | |||
| 25882 | 7.1742e-15, 6.9687e-15, 6.7691e-15, 6.5752e-15, 6.3868e-15, | |||
| 25883 | 6.2038e-15, 6.026e-15, 5.8533e-15, 5.6856e-15, 5.5226e-15, | |||
| 25884 | 5.3642e-15, 5.2104e-15, 5.061e-15, 4.9158e-15, 4.7748e-15, | |||
| 25885 | 4.6378e-15, 4.5047e-15, 4.3753e-15, 4.2497e-15, 4.1277e-15, | |||
| 25886 | 4.0091e-15, 3.8939e-15, 3.782e-15, 3.6733e-15, 3.5677e-15, | |||
| 25887 | 3.4651e-15, 3.3655e-15, 3.2686e-15, 3.1746e-15, 3.0832e-15, | |||
| 25888 | 2.9944e-15, 2.9082e-15, 2.8244e-15, 2.7431e-15, 2.664e-15, | |||
| 25889 | 2.5872e-15, 2.5126e-15, 2.4401e-15, 2.3697e-15, 2.3014e-15, | |||
| 25890 | 2.2349e-15, 2.1704e-15, 2.1077e-15, 2.0468e-15, 1.9877e-15, | |||
| 25891 | 1.9302e-15, 1.8744e-15, 1.8202e-15, 1.7675e-15, 1.7164e-15, | |||
| 25892 | 1.6667e-15, 1.6184e-15, 1.5716e-15, 1.526e-15, 1.4818e-15, | |||
| 25893 | 1.4389e-15, 1.3971e-15, 1.3566e-15, 1.3172e-15, 1.279e-15, | |||
| 25894 | 1.2419e-15, 1.2058e-15, 1.1708e-15, 1.1368e-15, 1.1037e-15, | |||
| 25895 | 1.0716e-15, 1.0405e-15, 1.0102e-15, 9.8079e-16, 9.5224e-16, | |||
| 25896 | 9.2451e-16, 8.9758e-16, 8.7142e-16, 8.4602e-16, 8.2136e-16, | |||
| 25897 | 7.974e-16, 7.7414e-16, 7.5154e-16, 7.2961e-16, 7.083e-16, | |||
| 25898 | 6.8761e-16, 6.6752e-16, 6.4801e-16, 6.2906e-16, 6.1066e-16, | |||
| 25899 | 5.928e-16, 5.7545e-16, 5.586e-16, 5.4224e-16, 5.2636e-16, | |||
| 25900 | 5.1094e-16, 4.9596e-16} }; | |||
| 25901 | ||||
| 25902 | struct s_s260b_ { | |||
| 25903 | double e_1[3]; | |||
| 25904 | int e_2; | |||
| 25905 | } s260b_ = { {-20., 2e4, 10.}, 2003 }; | |||
| 25906 | ||||
| 25907 | struct s_consts_ { | |||
| 25908 | double e_1[9]; | |||
| 25909 | } consts_ = { {3.1415927410125732, 6.62606876e-27, 1.3806503e-16, | |||
| 25910 | 29979245800., 6.02214199e23, 2.6867775e19, 83144720., | |||
| 25911 | 1.191042722e-12, 1.4387752} }; | |||
| 25912 | ||||
| 25913 | ||||
| 25914 | /* Table of constant values */ | |||
| 25915 | ||||
| 25916 | /* | |||
| 25917 | static integer c__9 = 9; | |||
| 25918 | static integer c__1 = 1; | |||
| 25919 | static integer c__2 = 2; | |||
| 25920 | static integer c__5 = 5; | |||
| 25921 | static int cs__0 = 0; | |||
| 25922 | */ | |||
| 25923 | // FIXME static double c_b125 = 0.; | |||
| 25924 | ||||
| 25925 | /* ############################################################################ */ | |||
| 25926 | /* path: $Source: /srv/svn/cvs/cvsroot/arts/src/continua.cc,v $ */ | |||
| 25927 | /* author: $Author $ */ | |||
| 25928 | /* revision: $Revision: 1.39 $ */ | |||
| 25929 | /* created: $Date: 2006/06/30 08:35:33 $ */ | |||
| 25930 | /* ############################################################################ */ | |||
| 25931 | ||||
| 25932 | /* CKD2.4 TEST */ | |||
| 25933 | /* TKS, 2002-02-28 */ | |||
| 25934 | /* CALL : g77 -c testckd.f ; g77 testckd.o -o testckd */ | |||
| 25935 | ||||
| 25936 | /* ############################################################################ */ | |||
| 25937 | /* ----------------------------------------------------------------------------- */ | |||
| 25938 | ||||
| 25939 | /* INPUT PARAMETERS: */ | |||
| 25940 | /* P [hPa] TOTAL PRESSURE */ | |||
| 25941 | /* T [K] TEMPERATURE */ | |||
| 25942 | /* VMRH2O [1] H2O VOLUME MIXING RATIO */ | |||
| 25943 | /* VMRN2 [1] N2 VOLUME MIXING RATIO */ | |||
| 25944 | /* VMRO2 [1] O2 VOLUME MIXING RATIO */ | |||
| 25945 | /* FREQ [Hz] FREQUENCY OF ABSORPTION CALCULATION */ | |||
| 25946 | ||||
| 25947 | ||||
| 25948 | /* OUTPUT PARAMETER: */ | |||
| 25949 | /* artsckd_ [1/m] ABSORPTION COEFFICIENT */ | |||
| 25950 | ||||
| 25951 | /* ----------------------------------------------------------------------------- */ | |||
| 25952 | ||||
| 25953 | double artsckd_(double p, double t, double vmrh2o, | |||
| 25954 | double vmrn2, double vmro2, double freq, int ivc) | |||
| 25955 | { | |||
| 25956 | /* Initialized data */ | |||
| 25957 | ||||
| 25958 | static double xslf = 1.; | |||
| 25959 | static double xfrg = 1.; | |||
| 25960 | static double xcn2 = 1.; | |||
| 25961 | ||||
| 25962 | /* System generated locals */ | |||
| 25963 | double ret_val=0.0e0; | |||
| 25964 | // FIXME double d__1, d__2, d__3, d__4; | |||
| 25965 | ||||
| 25966 | /* Local variables */ | |||
| 25967 | // FIXME int iosa; | |||
| 25968 | double w_wv__, oc_n2, radct; | |||
| 25969 | double w_other__, w_n2__, w_o2__; | |||
| 25970 | double of_wv, os_wv, p0, xn_wv__, t0, rhofac, wn, xn, xn0, tksvpt, rft; | |||
| 25971 | ||||
| 25972 | extern int initi_(double, double , double *, | |||
| 25973 | double *, double *, double *, double *, | |||
| 25974 | double *, double *, double *, double *, | |||
| 25975 | double *, double *); | |||
| 25976 | extern double fwv_(int , double , double *, double *, | |||
| 25977 | double *, double *, double *, double *); | |||
| 25978 | extern double swv_(int , double , double , double *, double * | |||
| 25979 | , double *, double *, double *, double *, | |||
| 25980 | double *); | |||
| 25981 | extern double conti_n2__(double , double , double *, | |||
| 25982 | double *, double *, double *, double *); | |||
| 25983 | ||||
| 25984 | ||||
| 25985 | /* PROGRAM: MODM */ | |||
| 25986 | /* ------- */ | |||
| 25987 | ||||
| 25988 | /* AUTHOR: Sid-Ahmed Boukabara */ | |||
| 25989 | /* ------ */ | |||
| 25990 | ||||
| 25991 | /* AFFILIATION: ATMOSPHERIC AND ENVIRONMENTAL RESEARCH INC. */ | |||
| 25992 | /* ----------- */ | |||
| 25993 | ||||
| 25994 | /* DATE OF CREATION : October 1998 */ | |||
| 25995 | /* ---------------- */ | |||
| 25996 | ||||
| 25997 | /* AIM: This program is aimed at the calculation of the */ | |||
| 25998 | /* --- atmospheric optical depths. The spectral validity depends */ | |||
| 25999 | /* only on the region covered by the file:"spectral_lines.dat" */ | |||
| 26000 | /* The components treated here are the water vapor, the */ | |||
| 26001 | /* oxygen, the ozone, the nitrogen and nitrogen dioxide. */ | |||
| 26002 | ||||
| 26003 | /* - IVC : Flag of contin. vers.: CKD2.4(if=2) MPMf87/s93 (if=3) */ | |||
| 26004 | /* - ICP : Flag to take(if =1) or not (if=0) the line coupling */ | |||
| 26005 | /* - NWN : Number of wavenumbers to be treated */ | |||
| 26006 | /* - WN : Vector of NWN wavenumbers [in cm-1], one should note that */ | |||
| 26007 | /* this input could be a scalar (associated with NWN=1) */ | |||
| 26008 | /* - NLAY : Number of layers to be treated. */ | |||
| 26009 | /* - P : Vector of NLAY pressures (in mbar), one should note that */ | |||
| 26010 | /* this input could be a scalar (associated with NLAY=1) */ | |||
| 26011 | /* - T : Vector of NLAY temperatures [in Kelvin] */ | |||
| 26012 | /* - W_WV : Vector of NLAY water vapor column amounts [in molecules/cm2] */ | |||
| 26013 | /* - W_O2 : Vector of NLAY oxygen column amounts [in molecules/cm2] */ | |||
| 26014 | /* - W_N2 : Vector of NLAY nitrogen column amounts [in molecules/cm2] */ | |||
| 26015 | /* - W_OTHER : Vector of NLAY of other species column amounts [in molecules/cm2] */ | |||
| 26016 | /* - CLW : Vector of NLAY Cloud Liquid Water amounts [in kg/m2 or mm] */ | |||
| 26017 | /* When Cloud is present, the frequency must be consistent */ | |||
| 26018 | /* with Rayleigh absorption (no scattering performed in */ | |||
| 26019 | /* monortm). */ | |||
| 26020 | /* - XSLF : Scaling factor of the self WV continuum (usually XSLF=1) */ | |||
| 26021 | /* - XFRG : Scaling factor of the foreign WV continuum (usually XFRG=1) */ | |||
| 26022 | /* - XCN2 : Scaling factor of the N2 continuum (usually XCN2=1) */ | |||
| 26023 | /* - O : An array of NWNxNLAY elts containing the total optical depths */ | |||
| 26024 | /* due to all the active species [in nepers] */ | |||
| 26025 | /* - OS_WV : An array of NWNxNLAY elts containing the water vapor optical */ | |||
| 26026 | /* depth (due to self continuum), [in Nepers] */ | |||
| 26027 | /* - OF_WV : An array of NWNxNLAY elts containing the water vapor optical */ | |||
| 26028 | /* depth (due to foreign continuum), [in Nepers] */ | |||
| 26029 | /* - OC_N2 : An array of NWNxNLAY elts containing the nitrogen optical */ | |||
| 26030 | /* depth (due to continuum), [in Nepers] */ | |||
| 26031 | /* - O_CLW : An array of NWNxNLAY elts containing the CLW optical */ | |||
| 26032 | /* depth , [in Nepers] */ | |||
| 26033 | ||||
| 26034 | /* History of the modifications: */ | |||
| 26035 | /* ***************************** */ | |||
| 26036 | /* - written in 1999 by Sid Ahmed Boukabara, Ross Hoffman */ | |||
| 26037 | /* and Tony Clough. */ | |||
| 26038 | /* - validated against ARM sondes in the */ | |||
| 26039 | /* microwave spectrum (23.8 and 31.4 GHz). SAB, 2000. */ | |||
| 26040 | /* - extended to more species by Sid Ahmed Boukabara in 03/2000. */ | |||
| 26041 | /* - cleaned up and commented in 2001 for first public release. */ | |||
| 26042 | /* Also put under CVS configuration management. SAB. */ | |||
| 26043 | /* - Extended O2 lines to submillimeter. Extensive validation */ | |||
| 26044 | /* by comparison to Rosenkranz model and MWR data. */ | |||
| 26045 | /* Update of the LBLATM module (accepts inputs at pressure */ | |||
| 26046 | /* grid, along with altitude grid). */ | |||
| 26047 | /* Fixed the handling of N2 amount coming from LBLATM (which */ | |||
| 26048 | /* depends on the number of molecules NMOL). */ | |||
| 26049 | /* Adopted accurate constants values. */ | |||
| 26050 | /* Sid Ahmed Boukabara. Dec 14th 2001. */ | |||
| 26051 | /* - Updated on January 7th 2002. ARM option (INP=2) updated and */ | |||
| 26052 | /* made more efficient after Jim's comments. (INP=3) option optimized. */ | |||
| 26053 | /* WV line intensities modified in the microwave (see Tony's email). */ | |||
| 26054 | ||||
| 26055 | /* Comments should be forwarded to Sid Ahmed Boukabara (sboukaba@aer.com) */ | |||
| 26056 | /* or Tony Clough (clough@aer.com). */ | |||
| 26057 | ||||
| 26058 | /* ============================================================================ */ | |||
| 26059 | ||||
| 26060 | ||||
| 26061 | /* TKS functions: */ | |||
| 26062 | ||||
| 26063 | /* scaling factor (SLF cont) */ | |||
| 26064 | /* scaling factor (FRG cont) */ | |||
| 26065 | /* scaling factor (N2 cont) */ | |||
| 26066 | ||||
| 26067 | ||||
| 26068 | w_wv__ = 0.0e0; | |||
| 26069 | w_o2__ = 0.0e0; | |||
| 26070 | w_n2__ = 0.0e0; | |||
| 26071 | w_other__ = 0.0e0; | |||
| 26072 | ret_val = 0.0e0; | |||
| 26073 | rft = 0.0e0; | |||
| 26074 | //os_wv = 0.0e0; | |||
| 26075 | //of_wv = 0.0e0; | |||
| 26076 | //oc_n2 = 0.0e0; | |||
| 26077 | ||||
| 26078 | /* ---INPUTS & GENERAL CONTROL PARAMETERS */ | |||
| 26079 | ||||
| 26080 | /* set H2O, O2 and N2 number density to column amount [molec/cm2] */ | |||
| 26081 | /* TKSVPT = P[Pa] / T[K] */ | |||
| 26082 | tksvpt = (p * 100.0) / t; | |||
| 26083 | /* 7.242923e16 = k_B [J/K] * 1.0e-6 [m^3/cm^3] */ | |||
| 26084 | w_wv__ = vmrh2o * 7.242923e16 * tksvpt; | |||
| 26085 | w_o2__ = vmro2 * 7.242923e16 * tksvpt; | |||
| 26086 | w_n2__ = vmrn2 * 7.242923e16 * tksvpt; | |||
| 26087 | w_other__ = (1.0000E0-vmrh2o-vmro2-vmrn2) * 7.242923e16 * tksvpt; | |||
| 26088 | ||||
| 26089 | /* frequency [Hz] to wave number [cm-1] */ | |||
| 26090 | wn = freq / 29979245800.0; | |||
| 26091 | //cout << "CKD2.4 H2O column amounts [molec/cm2] =" << w_wv__ << "\n"; | |||
| 26092 | //cout << "CKD2.4 O2 column amounts [molec/cm2] =" << w_o2__ << "\n"; | |||
| 26093 | //cout << "CKD2.4 H2O column amounts [molec/cm2] =" << w_n2__ << "\n"; | |||
| 26094 | //cout << "CKD2.4 others column amounts [molec/cm2] =" << w_other__ << "\n"; | |||
| 26095 | //cout << "freq=" << freq << " Hz, wave num=" << wn << " cm-1\n"; | |||
| 26096 | ||||
| 26097 | /* ---------------------------------------------------------------------------- */ | |||
| 26098 | ||||
| 26099 | /* --- INITIALIZATION ----------------------------------------- */ | |||
| 26100 | initi_(p, t, &radct, &t0, &p0, &w_wv__, &w_o2__, &w_n2__, &w_other__, & | |||
| 26101 | xn0, &xn, &xn_wv__, &rhofac); | |||
| 26102 | //cout << "CKD2.4 t0=" << t0 << " p0=" << p0 << "\n"; | |||
| 26103 | //cout << "radct =" << radct << "\n"; | |||
| 26104 | //cout << "xn0 =" << xn0 << "\n"; | |||
| 26105 | //cout << "xn =" << xn << "\n"; | |||
| 26106 | //cout << "xn_wv__ =" << xn_wv__ << "\n"; | |||
| 26107 | //cout << "rhofac =" << rhofac << "\n"; | |||
| 26108 | ||||
| 26109 | /* --- RAD_FIELD_TERM ----------------------------------------- */ | |||
| 26110 | rft = wn * tanh(radct * wn / (t * 2)); | |||
| 26111 | //cout << "rft =" << rft << "\n"; | |||
| 26112 | ||||
| 26113 | /* --- H2O CONTINUUM TERM ------------------------------------- */ | |||
| 26114 | ||||
| 26115 | if (ivc == 21) { | |||
| 26116 | /* CKD2.4 CONT_SELF_WV [Np/m] */ | |||
| 26117 | os_wv = 1.0000e2 * swv_(2, wn, t, &t0, &w_wv__, &rft, &xn, &xn_wv__, &xn0, &xslf); | |||
| 26118 | //cout << "CKD2.4 ivc=21, H2O self cont [in Np/m] =" << os_wv << "\n"; | |||
| 26119 | return os_wv; | |||
| 26120 | } | |||
| 26121 | if (ivc == 31) { | |||
| 26122 | /* MPMf87/s93 CONT_SELF_WV [Np/m] */ | |||
| 26123 | os_wv = 1.0000e2 * swv_(3, wn, t, &t0, &w_wv__, &rft, &xn, &xn_wv__, &xn0, &xslf); | |||
| 26124 | //cout << "CKD2.4 ivc=31, H2O self cont [in Np/m] =" << os_wv << "\n"; | |||
| 26125 | return os_wv; | |||
| 26126 | } | |||
| 26127 | if (ivc == 22) { | |||
| 26128 | /* CKD2.4 CONT_FRGN_WV [Np/m] */ | |||
| 26129 | of_wv = 1.0000e2 * fwv_(2, wn, &w_wv__, &rft, &xn, &xn_wv__, &xn0, &xfrg); | |||
| 26130 | //cout << "CKD2.4 ivc=22, H2O foreign cont [in Np/m] =" << of_wv << "\n"; | |||
| 26131 | return of_wv; | |||
| 26132 | } | |||
| 26133 | if (ivc == 32) { | |||
| 26134 | /* MPMf87/s93 CONT_FRGN_WV [Np/m] */ | |||
| 26135 | of_wv = 1.0000e2 * fwv_(3, wn, &w_wv__, &rft, &xn, &xn_wv__, &xn0, &xfrg); | |||
| 26136 | //cout << "CKD2.4 ivc=32, H2O foreign cont [in Np/m] =" << of_wv << "\n"; | |||
| 26137 | return of_wv ; | |||
| 26138 | } | |||
| 26139 | ||||
| 26140 | /* --- N2 CONTINUUM TERM [Np/m] ----------------------------------- */ | |||
| 26141 | if (ivc == 1) { | |||
| 26142 | oc_n2 = 1.0000e2 * conti_n2__(wn, t, &t0, &w_n2__, &rft, &rhofac, &xcn2); | |||
| 26143 | //cout << "CKD2.4 ivc=1, N2 cont [in Np/m] =" << oc_n2 << "\n"; | |||
| 26144 | return oc_n2; | |||
| 26145 | } | |||
| 26146 | ||||
| 26147 | /* --- TOTAL ABSORPTION IN [in Np/m] --------------------------- */ | |||
| 26148 | // cout << "CKD2.4 H2O s+f cont [in Np/m] =" << ((os_wv+of_wv) * 1.0000e2) << "\n"; | |||
| 26149 | //ret_val = ((os_wv + of_wv + oc_n2) * 1.0000e2); | |||
| 26150 | ||||
| 26151 | // FIXME L999: | |||
| 26152 | ||||
| 26153 | return ret_val; // [Np/m] | |||
| 26154 | } /* artsckd_ */ | |||
| 26155 | ||||
| 26156 | ||||
| 26157 | /* ############################################################################ */ | |||
| 26158 | /* foreign continuum functions -------------------------------------------- */ | |||
| 26159 | double fwv_(int ivc, double wn, double *w_wv__, double *rft, | |||
| 26160 | double *xn, double *xn_wv__, double *xn0, double *xfrg) | |||
| 26161 | { | |||
| 26162 | /* System generated locals */ | |||
| 26163 | double ret_val = 0.0e0; | |||
| 26164 | ||||
| 26165 | /* Local variables */ | |||
| 26166 | extern double fwv24_(double , double *, double *, | |||
| 26167 | double *, double *, double *, double *), | |||
| 26168 | fwv_mpmf87s93__(double , double *, double *, | |||
| 26169 | double *, double *, double *, double *); | |||
| 26170 | ||||
| 26171 | ret_val = 0.0e0; | |||
| 26172 | ||||
| 26173 | /* --- CKD2.4 CONTINUUM ------------------------------------- */ | |||
| 26174 | if (ivc == 2 && *w_wv__ > 0.) { | |||
| 26175 | ret_val = fwv24_(wn, w_wv__, rft, xn, xn_wv__, xn0, xfrg); | |||
| 26176 | } | |||
| 26177 | ||||
| 26178 | ||||
| 26179 | /* --- MPMf87s93 CONTINUUM ---------------------------------- */ | |||
| 26180 | if (ivc == 3 && *w_wv__ > 0.) { | |||
| 26181 | ret_val = fwv_mpmf87s93__(wn, w_wv__, rft, xn, xn_wv__, xn0, xfrg); | |||
| 26182 | } | |||
| 26183 | ||||
| 26184 | return ret_val; | |||
| 26185 | } /* fwv_ */ | |||
| 26186 | ||||
| 26187 | double fwv_mpmf87s93__(double wn, double *w_wv__, double *rft, | |||
| 26188 | double *xn, double *xn_wv__, double *xn0, double *xfrg) | |||
| 26189 | { | |||
| 26190 | /* System generated locals */ | |||
| 26191 | double ret_val=0.0e0; | |||
| 26192 | ||||
| 26193 | /* Local variables */ | |||
| 26194 | extern double xlgr_(double *, double *); | |||
| 26195 | int i__, j; | |||
| 26196 | double x[4], fscal, xf; | |||
| 26197 | ||||
| 26198 | j = (int) ((wn - fh2ob_1(*(struct fh2ob_1_ *) &fh2ob_).v1) / fh2ob_1(*(struct fh2ob_1_ *) &fh2ob_).dv) + 1; | |||
| 26199 | ||||
| 26200 | for (i__ = 1; i__ <= 4; ++i__) { | |||
| 26201 | x[i__ - 1] = fh2oa_1(*(struct fh2oa_1_ *) &fh2oa_).fh2o[j + i__ - 3]; | |||
| 26202 | } | |||
| 26203 | ||||
| 26204 | xf = (wn - (fh2ob_1(*(struct fh2ob_1_ *) &fh2ob_).v1 + fh2ob_1(*(struct fh2ob_1_ *) &fh2ob_).dv * (double) (j - 1))) / | |||
| 26205 | fh2ob_1(*(struct fh2ob_1_ *) &fh2ob_).dv; | |||
| 26206 | fscal = .8; | |||
| 26207 | ret_val = xlgr_(&xf, x) * 1e-20 * (*w_wv__ * *rft * ((*xn - *xn_wv__) / * | |||
| 26208 | xn0)) * fscal * *xfrg; | |||
| 26209 | ||||
| 26210 | /* L999: */ | |||
| 26211 | return ret_val; | |||
| 26212 | } /* fwv_mpmf87s93__ */ | |||
| 26213 | ||||
| 26214 | double fwv24_(double wn, double *w_wv__, double *rft, | |||
| 26215 | double *xn, double *xn_wv__, double *xn0, double * | |||
| 26216 | xfrg) | |||
| 26217 | { | |||
| 26218 | /* Initialized data */ | |||
| 26219 | ||||
| 26220 | static double v0f1 = 350.; | |||
| 26221 | static double hwsqf1 = 4e4; | |||
| 26222 | static double betaf1 = 5e-9; | |||
| 26223 | static double factrf1 = -.7; | |||
| 26224 | static double v0f1a = 630.; | |||
| 26225 | static double hwsqf1a = 4225.; | |||
| 26226 | static double betaf1a = 2e-8; | |||
| 26227 | static double factrf1a = .75; | |||
| 26228 | static double v0f2 = 1130.; | |||
| 26229 | static double hwsqf2 = 108900.; | |||
| 26230 | static double betaf2 = 8e-11; | |||
| 26231 | static double factrf2 = -.97; | |||
| 26232 | static double v0f3 = 1975.; | |||
| 26233 | static double hwsqf3 = 62500.; | |||
| 26234 | static double betaf3 = 5e-6; | |||
| 26235 | static double factrf3 = -.65; | |||
| 26236 | ||||
| 26237 | /* System generated locals */ | |||
| 26238 | double ret_val=0.0e0; | |||
| 26239 | double d__1; | |||
| 26240 | ||||
| 26241 | /* Local variables */ | |||
| 26242 | extern double xlgr_(double *, double *); | |||
| 26243 | int i__, j; | |||
| 26244 | double x[4], fscal, xf, vf2, vf4, vf6; | |||
| 26245 | ||||
| 26246 | j = (int) ((wn - fh2ob_1(*(struct fh2ob_1_ *) &fh2ob_).v1) / fh2ob_1(*(struct fh2ob_1_ *) &fh2ob_).dv) + 1; | |||
| 26247 | for (i__ = 1; i__ <= 4; ++i__) { | |||
| 26248 | x[i__ - 1] = fh2oa_1(*(struct fh2oa_1_ *) &fh2oa_).fh2o[j + i__ - 3]; | |||
| 26249 | } | |||
| 26250 | ||||
| 26251 | xf = (wn - (fh2ob_1(*(struct fh2ob_1_ *) &fh2ob_).v1 + fh2ob_1(*(struct fh2ob_1_ *) &fh2ob_).dv * (double) (j - 1))) / | |||
| 26252 | fh2ob_1(*(struct fh2ob_1_ *) &fh2ob_).dv; | |||
| 26253 | ||||
| 26254 | /* ---added correction to the forgn continuum */ | |||
| 26255 | /* Computing 2nd power */ | |||
| 26256 | d__1 = wn - v0f1; | |||
| 26257 | vf2 = d__1 * d__1; | |||
| 26258 | vf6 = vf2 * vf2 * vf2; | |||
| 26259 | fscal = factrf1 * (hwsqf1 / (vf2 + betaf1 * vf6 + hwsqf1)) + 1.; | |||
| 26260 | /* Computing 2nd power */ | |||
| 26261 | d__1 = wn - v0f1a; | |||
| 26262 | vf2 = d__1 * d__1; | |||
| 26263 | vf6 = vf2 * vf2 * vf2; | |||
| 26264 | fscal *= factrf1a * (hwsqf1a / (vf2 + betaf1a * vf6 + hwsqf1a)) + 1.; | |||
| 26265 | /* Computing 2nd power */ | |||
| 26266 | d__1 = wn - v0f2; | |||
| 26267 | vf2 = d__1 * d__1; | |||
| 26268 | vf6 = vf2 * vf2 * vf2; | |||
| 26269 | fscal *= factrf2 * (hwsqf2 / (vf2 + betaf2 * vf6 + hwsqf2)) + 1.; | |||
| 26270 | /* Computing 2nd power */ | |||
| 26271 | d__1 = wn - v0f3; | |||
| 26272 | vf2 = d__1 * d__1; | |||
| 26273 | vf4 = vf2 * vf2; | |||
| 26274 | fscal *= factrf3 * (hwsqf3 / (vf2 + betaf3 * vf4 + hwsqf3)) + 1.; | |||
| 26275 | ret_val = xlgr_(&xf, x) * 1e-20 * (*w_wv__ * *rft * ((*xn - *xn_wv__) / * | |||
| 26276 | xn0)) * fscal * *xfrg; | |||
| 26277 | ||||
| 26278 | /* L999: */ | |||
| 26279 | return ret_val; | |||
| 26280 | } /* fwv24_ */ | |||
| 26281 | ||||
| 26282 | ||||
| 26283 | ||||
| 26284 | /* self continuum function ------------------------------------------------ */ | |||
| 26285 | double swv_(int ivc, double wn, double t, double *t0, | |||
| 26286 | double *w_wv__, double *rft, double *xn, double * | |||
| 26287 | xn_wv__, double *xn0, double *xslf) | |||
| 26288 | { | |||
| 26289 | /* System generated locals */ | |||
| 26290 | double ret_val; | |||
| 26291 | ||||
| 26292 | /* Local variables */ | |||
| 26293 | extern double swv_mpmf87s93__(double , double , double * | |||
| 26294 | , double *, double *, double *, double *, | |||
| 26295 | double *, double *); | |||
| 26296 | extern double swv24_(double , double , | |||
| 26297 | double *, double *, double *, double *, | |||
| 26298 | double *, double *, double *); | |||
| 26299 | ||||
| 26300 | ret_val = 0.; | |||
| 26301 | ||||
| 26302 | /* CKD2.4 CONTINUUM */ | |||
| 26303 | if (ivc == 2 && *w_wv__ > 0.) { | |||
| 26304 | /* CNT_SLF_WV CKD2.4 */ | |||
| 26305 | ret_val = swv24_(wn, t, t0, w_wv__, rft, xn, xn_wv__, xn0, xslf); | |||
| 26306 | } | |||
| 26307 | ||||
| 26308 | if (ivc == 3 && *w_wv__ > 0.) { | |||
| 26309 | /* MPMf87s93 CKD2.4 CONT. */ | |||
| 26310 | /* CNT_SLF_WV */ | |||
| 26311 | ret_val = swv_mpmf87s93__(wn, t, t0, w_wv__, rft, xn, xn_wv__, xn0, | |||
| 26312 | xslf); | |||
| 26313 | } | |||
| 26314 | ||||
| 26315 | return ret_val; | |||
| 26316 | } /* swv_ */ | |||
| 26317 | ||||
| 26318 | ||||
| 26319 | ||||
| 26320 | double swv24_(double wn, double t, double *t0, double * | |||
| 26321 | w_wv__, double *rft, double * /* xn */, double *xn_wv__, | |||
| 26322 | double *xn0, double *xslf) | |||
| 26323 | { | |||
| 26324 | /* Initialized data */ | |||
| 26325 | ||||
| 26326 | static double v0s1 = 0.; | |||
| 26327 | static double hwsq1 = 1e4; | |||
| 26328 | static double betas1 = 1e-4; | |||
| 26329 | static double factrs1 = .688; | |||
| 26330 | static double v0s2 = 1050.; | |||
| 26331 | static double hwsq2 = 4e4; | |||
| 26332 | static double factrs2 = -.2333; | |||
| 26333 | static double v0s3 = 1310.; | |||
| 26334 | static double hwsq3 = 14400.; | |||
| 26335 | static double betas3 = 5e-6; | |||
| 26336 | static double factrs3 = -.15; | |||
| 26337 | ||||
| 26338 | /* System generated locals */ | |||
| 26339 | double ret_val, d__1, d__2; | |||
| 26340 | ||||
| 26341 | /* Local variables */ | |||
| 26342 | double sfac; | |||
| 26343 | extern double xlgr_(double *, double *); | |||
| 26344 | int j; | |||
| 26345 | double x[4], xf, vs2, vs4; | |||
| 26346 | ||||
| 26347 | /* ---UNITS(CM**3/MOL)*1.E-20 */ | |||
| 26348 | ||||
| 26349 | j = (int) ((wn - sh2ob_1(*(struct sh2ob_1_ *) &sh2ob_).v1) / sh2ob_1(*(struct sh2ob_1_ *) &sh2ob_).dv) + 1; | |||
| 26350 | d__1 = s260a_1(*(struct s260a_1_ *) &s260a_).swv260[j - 2] / sh2oa_1(*(struct sh2oa_1_ *) &sh2oa_).swv296[j - 2]; | |||
| 26351 | d__2 = (t - *t0) / (260. - *t0); | |||
| 26352 | x[0] = sh2oa_1(*(struct sh2oa_1_ *) &sh2oa_).swv296[j - 2] * pow(d__1, d__2); | |||
| 26353 | d__1 = s260a_1(*(struct s260a_1_ *) &s260a_).swv260[j - 1] / sh2oa_1(*(struct sh2oa_1_ *) &sh2oa_).swv296[j - 1]; | |||
| 26354 | d__2 = (t - *t0) / (260. - *t0); | |||
| 26355 | x[1] = sh2oa_1(*(struct sh2oa_1_ *) &sh2oa_).swv296[j - 1] * pow(d__1, d__2); | |||
| 26356 | d__1 = s260a_1(*(struct s260a_1_ *) &s260a_).swv260[j] / sh2oa_1(*(struct sh2oa_1_ *) &sh2oa_).swv296[j]; | |||
| 26357 | d__2 = (t - *t0) / (260. - *t0); | |||
| 26358 | x[2] = sh2oa_1(*(struct sh2oa_1_ *) &sh2oa_).swv296[j] * pow(d__1, d__2); | |||
| 26359 | d__1 = s260a_1(*(struct s260a_1_ *) &s260a_).swv260[j + 1] / sh2oa_1(*(struct sh2oa_1_ *) &sh2oa_).swv296[j + 1]; | |||
| 26360 | d__2 = (t - *t0) / (260. - *t0); | |||
| 26361 | x[3] = sh2oa_1(*(struct sh2oa_1_ *) &sh2oa_).swv296[j + 1] * pow(d__1, d__2); | |||
| 26362 | xf = (wn - (sh2ob_1(*(struct sh2ob_1_ *) &sh2ob_).v1 + sh2ob_1(*(struct sh2ob_1_ *) &sh2ob_).dv * (double) (j - 1))) / | |||
| 26363 | sh2ob_1(*(struct sh2ob_1_ *) &sh2ob_).dv; | |||
| 26364 | sfac = 1.; | |||
| 26365 | /* Computing 2nd power */ | |||
| 26366 | d__1 = wn - v0s1; | |||
| 26367 | vs2 = d__1 * d__1; | |||
| 26368 | vs4 = vs2 * vs2; | |||
| 26369 | /* Computing 2nd power */ | |||
| 26370 | d__1 = wn; | |||
| 26371 | sfac *= factrs1 * (hwsq1 / (d__1 * d__1 + betas1 * vs4 + hwsq1)) + 1.; | |||
| 26372 | /* Computing 2nd power */ | |||
| 26373 | d__1 = wn - v0s2; | |||
| 26374 | vs2 = d__1 * d__1; | |||
| 26375 | sfac *= factrs2 * (hwsq2 / (vs2 + hwsq2)) + 1.; | |||
| 26376 | /* Computing 2nd power */ | |||
| 26377 | d__1 = wn - v0s3; | |||
| 26378 | vs2 = d__1 * d__1; | |||
| 26379 | vs4 = vs2 * vs2; | |||
| 26380 | sfac *= factrs3 * (hwsq3 / (vs2 + betas3 * vs4 + hwsq3)) + 1.; | |||
| 26381 | ret_val = *w_wv__ * *rft * (*xn_wv__ / *xn0) * xlgr_(&xf, x) * 1e-20 * | |||
| 26382 | sfac * *xslf; | |||
| 26383 | ||||
| 26384 | return ret_val; | |||
| 26385 | } /* swv24_ */ | |||
| 26386 | ||||
| 26387 | double swv_mpmf87s93__(double wn, double t, double *t0, | |||
| 26388 | double *w_wv__, double *rft, double * /* xn */, double * | |||
| 26389 | xn_wv__, double *xn0, double *xslf) | |||
| 26390 | { | |||
| 26391 | /* System generated locals */ | |||
| 26392 | double ret_val, d__1, d__2; | |||
| 26393 | ||||
| 26394 | /* Local variables */ | |||
| 26395 | double sfac; | |||
| 26396 | extern double xlgr_(double *, double *); | |||
| 26397 | int j; | |||
| 26398 | double x[4], xf; | |||
| 26399 | ||||
| 26400 | /* ---UNITS(CM**3/MOL)*1.E-20 */ | |||
| 26401 | ||||
| 26402 | j = (int) ((wn - sh2ob_1(*(struct sh2ob_1_ *) &sh2ob_).v1) / sh2ob_1(*(struct sh2ob_1_ *) &sh2ob_).dv) + 1; | |||
| 26403 | d__1 = s260a_1(*(struct s260a_1_ *) &s260a_).swv260[j - 2] / sh2oa_1(*(struct sh2oa_1_ *) &sh2oa_).swv296[j - 2]; | |||
| 26404 | d__2 = (t - *t0) / (260. - *t0); | |||
| 26405 | x[0] = sh2oa_1(*(struct sh2oa_1_ *) &sh2oa_).swv296[j - 2] * pow(d__1, d__2); | |||
| 26406 | d__1 = s260a_1(*(struct s260a_1_ *) &s260a_).swv260[j - 1] / sh2oa_1(*(struct sh2oa_1_ *) &sh2oa_).swv296[j - 1]; | |||
| 26407 | d__2 = (t - *t0) / (260. - *t0); | |||
| 26408 | x[1] = sh2oa_1(*(struct sh2oa_1_ *) &sh2oa_).swv296[j - 1] * pow(d__1, d__2); | |||
| 26409 | d__1 = s260a_1(*(struct s260a_1_ *) &s260a_).swv260[j] / sh2oa_1(*(struct sh2oa_1_ *) &sh2oa_).swv296[j]; | |||
| 26410 | d__2 = (t - *t0) / (260. - *t0); | |||
| 26411 | x[2] = sh2oa_1(*(struct sh2oa_1_ *) &sh2oa_).swv296[j] * pow(d__1, d__2); | |||
| 26412 | d__1 = s260a_1(*(struct s260a_1_ *) &s260a_).swv260[j + 1] / sh2oa_1(*(struct sh2oa_1_ *) &sh2oa_).swv296[j + 1]; | |||
| 26413 | d__2 = (t - *t0) / (260. - *t0); | |||
| 26414 | x[3] = sh2oa_1(*(struct sh2oa_1_ *) &sh2oa_).swv296[j + 1] * pow(d__1, d__2); | |||
| 26415 | xf = (wn - (sh2ob_1(*(struct sh2ob_1_ *) &sh2ob_).v1 + sh2ob_1(*(struct sh2ob_1_ *) &sh2ob_).dv * (double) (j - 1))) / | |||
| 26416 | sh2ob_1(*(struct sh2ob_1_ *) &sh2ob_).dv; | |||
| 26417 | sfac = 3.; | |||
| 26418 | ret_val = *w_wv__ * *rft * (*xn_wv__ / *xn0) * xlgr_(&xf, x) * 1e-20 * | |||
| 26419 | sfac * *xslf; | |||
| 26420 | ||||
| 26421 | /* L999: */ | |||
| 26422 | return ret_val; | |||
| 26423 | } /* swv_mpmf87s93__ */ | |||
| 26424 | ||||
| 26425 | /* --- N2 continuum ------------------------------------------------------- */ | |||
| 26426 | double conti_n2__(double wn, double t, double *t0, | |||
| 26427 | double *w_n2__, double *rft, double *rhofac, double * | |||
| 26428 | xcn2) | |||
| 26429 | { | |||
| 26430 | /* Initialized data */ | |||
| 26431 | ||||
| 26432 | static double v1 = -10.; | |||
| 26433 | static double dv = 5.; | |||
| 26434 | static double ct296[73] = { 4.303e-7,4.85e-7,4.979e-7,4.85e-7, | |||
| 26435 | 4.303e-7,3.715e-7,3.292e-7,3.086e-7,2.92e-7,2.813e-7,2.804e-7, | |||
| 26436 | 2.738e-7,2.726e-7,2.724e-7,2.635e-7,2.621e-7,2.547e-7,2.428e-7, | |||
| 26437 | 2.371e-7,2.228e-7,2.1e-7,1.991e-7,1.822e-7,1.697e-7,1.555e-7, | |||
| 26438 | 1.398e-7,1.281e-7,1.138e-7,1.012e-7,9.078e-8,7.879e-8,6.944e-8, | |||
| 26439 | 6.084e-8,5.207e-8,4.54e-8,3.897e-8,3.313e-8,2.852e-8,2.413e-8, | |||
| 26440 | 2.045e-8,1.737e-8,1.458e-8,1.231e-8,1.031e-8,8.586e-9,7.162e-9, | |||
| 26441 | 5.963e-9,4.999e-9,4.226e-9,3.607e-9,3.09e-9,2.669e-9,2.325e-9, | |||
| 26442 | 2.024e-9,1.783e-9,1.574e-9,1.387e-9,1.236e-9,1.098e-9,9.777e-10, | |||
| 26443 | 8.765e-10,7.833e-10,7.022e-10,6.317e-10,5.65e-10,5.1e-10, | |||
| 26444 | 4.572e-10,4.115e-10,3.721e-10,3.339e-10,3.005e-10,2.715e-10, | |||
| 26445 | 2.428e-10 }; | |||
| 26446 | static double ct220[73] = { 4.946e-7,5.756e-7,5.964e-7,5.756e-7, | |||
| 26447 | 4.946e-7,4.145e-7,3.641e-7,3.482e-7,3.34e-7,3.252e-7,3.299e-7, | |||
| 26448 | 3.206e-7,3.184e-7,3.167e-7,2.994e-7,2.943e-7,2.794e-7,2.582e-7, | |||
| 26449 | 2.468e-7,2.237e-7,2.038e-7,1.873e-7,1.641e-7,1.474e-7,1.297e-7, | |||
| 26450 | 1.114e-7,9.813e-8,8.309e-8,7.059e-8,6.068e-8,5.008e-8,4.221e-8, | |||
| 26451 | 3.537e-8,2.885e-8,2.407e-8,1.977e-8,1.605e-8,1.313e-8,1.057e-8, | |||
| 26452 | 8.482e-9,6.844e-9,5.595e-9,4.616e-9,3.854e-9,3.257e-9,2.757e-9, | |||
| 26453 | 2.372e-9,2.039e-9,1.767e-9,1.548e-9,1.346e-9,1.181e-9,1.043e-9, | |||
| 26454 | 9.11e-10,8.103e-10,7.189e-10,6.314e-10,5.635e-10,4.976e-10, | |||
| 26455 | 4.401e-10,3.926e-10,3.477e-10,3.085e-10,2.745e-10,2.416e-10, | |||
| 26456 | 2.155e-10,1.895e-10,1.678e-10,1.493e-10,1.31e-10,1.154e-10, | |||
| 26457 | 1.019e-10,8.855e-11 }; | |||
| 26458 | ||||
| 26459 | /* System generated locals */ | |||
| 26460 | double ret_val, d__1, d__2; | |||
| 26461 | ||||
| 26462 | /* Local variables */ | |||
| 26463 | extern double xlgr_(double *, double *); | |||
| 26464 | int j; | |||
| 26465 | double x[4], xf; | |||
| 26466 | ||||
| 26467 | /* TKS INTEGER NPTCONTN2 */ | |||
| 26468 | /* TKS INTEGER NPTCONTN2B */ | |||
| 26469 | /* TKS & V1B,V2B,DVB */ | |||
| 26470 | /* TKS DATA V2 / 350.0 / */ | |||
| 26471 | /* TKS DATA NPTCONTN2 / 73 / */ | |||
| 26472 | /* TKS DATA V1B, V2B, DVB, NPTCONTN2B / -10., 350., 5.0, 73 / */ | |||
| 26473 | ||||
| 26474 | ||||
| 26475 | ||||
| 26476 | /* TKS -- begin implementation of TKS */ | |||
| 26477 | if (wn <= 0.) { | |||
| 26478 | ret_val = 0.; | |||
| 26479 | return ret_val; | |||
| 26480 | } | |||
| 26481 | if (wn > 350.) { | |||
| 26482 | ret_val = 0.; | |||
| 26483 | return ret_val; | |||
| 26484 | } | |||
| 26485 | /* TKS -- end implementation of TKS */ | |||
| 26486 | ||||
| 26487 | if (*w_n2__ == 0.) { | |||
| 26488 | ret_val = 0.; | |||
| 26489 | return ret_val; | |||
| 26490 | } | |||
| 26491 | ||||
| 26492 | j = (int) ((wn - v1) / dv) + 1; | |||
| 26493 | d__1 = ct296[j - 2] / ct220[j - 2]; | |||
| 26494 | d__2 = (t - *t0) / (220. - *t0); | |||
| 26495 | x[0] = ct296[j - 2] * pow(d__1, d__2); | |||
| 26496 | d__1 = ct296[j - 1] / ct220[j - 1]; | |||
| 26497 | d__2 = (t - *t0) / (220. - *t0); | |||
| 26498 | x[1] = ct296[j - 1] * pow(d__1, d__2); | |||
| 26499 | d__1 = ct296[j] / ct220[j]; | |||
| 26500 | d__2 = (t - *t0) / (220. - *t0); | |||
| 26501 | x[2] = ct296[j] * pow(d__1, d__2); | |||
| 26502 | d__1 = ct296[j + 1] / ct220[j + 1]; | |||
| 26503 | d__2 = (t - *t0) / (220. - *t0); | |||
| 26504 | x[3] = ct296[j + 1] * pow(d__1, d__2); | |||
| 26505 | xf = (wn - (v1 + dv * (double) (j - 1))) / dv; | |||
| 26506 | ret_val = xlgr_(&xf, x) * 1e-20 * (*w_n2__ / .26867775 * *rft * *rhofac) * | |||
| 26507 | *xcn2; | |||
| 26508 | ||||
| 26509 | return ret_val; | |||
| 26510 | } /* conti_n2__ */ | |||
| 26511 | ||||
| 26512 | /* --- 4 points Lagrange interpolation ----------------------------------- */ | |||
| 26513 | double xlgr_(double *xf, double *x) | |||
| 26514 | { | |||
| 26515 | /* System generated locals */ | |||
| 26516 | double ret_val; | |||
| 26517 | ||||
| 26518 | /* Local variables */ | |||
| 26519 | double a[4], b; | |||
| 26520 | ||||
| 26521 | ||||
| 26522 | ||||
| 26523 | ||||
| 26524 | /* with continous derivatives */ | |||
| 26525 | /* Parameter adjustments */ | |||
| 26526 | --x; | |||
| 26527 | ||||
| 26528 | /* Function Body */ | |||
| 26529 | b = *xf * .5 * (1. - *xf); | |||
| 26530 | a[0] = -b * (1. - *xf); | |||
| 26531 | a[1] = 1. - (3. - *xf * 2.) * *xf * *xf + b * *xf; | |||
| 26532 | a[2] = (3. - *xf * 2.) * *xf * *xf + b * (1. - *xf); | |||
| 26533 | a[3] = -(b * *xf); | |||
| 26534 | ret_val = a[0] * x[1] + a[1] * x[2] + a[2] * x[3] + a[3] * x[4]; | |||
| 26535 | ||||
| 26536 | /* L999: */ | |||
| 26537 | return ret_val; | |||
| 26538 | } /* xlgr_ */ | |||
| 26539 | ||||
| 26540 | /* --- initializations ---------------------------------------------------- */ | |||
| 26541 | int initi_(double p, double t, double *radct, | |||
| 26542 | double *t0, double *p0, double *w_wv__, double * | |||
| 26543 | w_o2__, double *w_n2__, double *w_other__, double *xn0, | |||
| 26544 | double *xn, double *xn_wv__, double *rhofac) | |||
| 26545 | { | |||
| 26546 | /* Initialized data */ | |||
| 26547 | ||||
| 26548 | static double wvmolmass = 18.016; | |||
| 26549 | static double drymolmass = 28.97; | |||
| 26550 | ||||
| 26551 | double wdry, ratiomix, wvpress; | |||
| 26552 | ||||
| 26553 | /* [K] */ | |||
| 26554 | *t0 = 296.; | |||
| 26555 | /* [hPa] */ | |||
| 26556 | *p0 = 1013.25; | |||
| 26557 | ||||
| 26558 | /* [K/cm-1] */ | |||
| 26559 | *radct = consts_1(*(struct consts_1_ *) &consts_).planck * consts_1(*(struct consts_1_ *) &consts_).clight / consts_1(*(struct consts_1_ *) &consts_).boltz; | |||
| 26560 | *xn0 = *p0 / (consts_1(*(struct consts_1_ *) &consts_).boltz * *t0) * 1e3; | |||
| 26561 | *xn = p / (consts_1(*(struct consts_1_ *) &consts_).boltz * t) * 1e3; | |||
| 26562 | wdry = *w_o2__ + *w_n2__ + *w_other__; | |||
| 26563 | ratiomix = *w_wv__ * wvmolmass / (wdry * drymolmass); | |||
| 26564 | wvpress = ratiomix / (ratiomix + wvmolmass / drymolmass) * p; | |||
| 26565 | *xn_wv__ = wvpress / (consts_1(*(struct consts_1_ *) &consts_).boltz * t) * 1e3; | |||
| 26566 | *rhofac = *w_n2__ / (wdry + *w_wv__) * (p / *p0) * (273.15 / t); | |||
| 26567 | ||||
| 26568 | /* L999: */ | |||
| 26569 | return 0; | |||
| 26570 | } /* initi_ */ | |||
| 26571 | ||||
| 26572 | /* ############################################################################ */ | |||
| 26573 | /* ---Block data to be consistent with LBLRTM/LBLATM */ | |||
| 26574 | /* Subroutine */ int phys_consts__(void) | |||
| 26575 | { | |||
| 26576 | return 0; | |||
| 26577 | } /* phys_consts__ */ | |||
| 26578 | ||||
| 26579 | ||||
| 26580 | /* Pi was obtained from PI = 2.*ASIN(1.) */ | |||
| 26581 | /* --------------------------------------------- */ | |||
| 26582 | /* Constants from NIST 01/11/2002 */ | |||
| 26583 | /* --------------------------------------------- */ | |||
| 26584 | /* --------------------------------------------- */ | |||
| 26585 | /* units are generally cgs */ | |||
| 26586 | /* The first and second radiation constants are taken from NIST. */ | |||
| 26587 | /* They were previously obtained from the relations: */ | |||
| 26588 | /* RADCN1 = 2.*PLANCK*CLIGHT*CLIGHT*1.E-07 */ | |||
| 26589 | /* RADCN2 = PLANCK*CLIGHT/BOLTZ */ | |||
| 26590 | /* --------------------------------------------- */ | |||
| 26591 | ||||
| 26592 | /* ############################################################################ */ | |||
| 26593 | /* Subroutine */ int bsa296_(void) | |||
| 26594 | { | |||
| 26595 | return 0; | |||
| 26596 | } /* bsa296_ */ | |||
| 26597 | ||||
| 26598 | ||||
| 26599 | ||||
| 26600 | ||||
| 26601 | ||||
| 26602 | ||||
| 26603 | ||||
| 26604 | /* Subroutine */ int bsb296_(void) | |||
| 26605 | { | |||
| 26606 | return 0; | |||
| 26607 | } /* bsb296_ */ | |||
| 26608 | ||||
| 26609 | ||||
| 26610 | ||||
| 26611 | ||||
| 26612 | ||||
| 26613 | ||||
| 26614 | ||||
| 26615 | /* ---------------------------------------------------------------------------- */ | |||
| 26616 | ||||
| 26617 | ||||
| 26618 | /* Subroutine */ int bs260a_(void) | |||
| 26619 | { | |||
| 26620 | return 0; | |||
| 26621 | } /* bs260a_ */ | |||
| 26622 | ||||
| 26623 | ||||
| 26624 | ||||
| 26625 | ||||
| 26626 | ||||
| 26627 | ||||
| 26628 | ||||
| 26629 | ||||
| 26630 | /* Subroutine */ int bs260b_(void) | |||
| 26631 | { | |||
| 26632 | return 0; | |||
| 26633 | } /* bs260b_ */ | |||
| 26634 | ||||
| 26635 | ||||
| 26636 | ||||
| 26637 | ||||
| 26638 | ||||
| 26639 | ||||
| 26640 | ||||
| 26641 | /* ---------------------------------------------------------------------------- */ | |||
| 26642 | ||||
| 26643 | ||||
| 26644 | /* Subroutine */ int bfh2oa_(void) | |||
| 26645 | { | |||
| 26646 | return 0; | |||
| 26647 | } /* bfh2oa_ */ | |||
| 26648 | ||||
| 26649 | ||||
| 26650 | ||||
| 26651 | ||||
| 26652 | ||||
| 26653 | ||||
| 26654 | ||||
| 26655 | ||||
| 26656 | /* Subroutine */ int bfh2ob_(void) | |||
| 26657 | { | |||
| 26658 | return 0; | |||
| 26659 | } /* bfh2ob_ */ | |||
| 26660 | ||||
| 26661 | ||||
| 26662 | // ---------------------- end of monortm CKD F77 code -------------------------- |